在Excel中使用VBA复制单词OLE对象的内容而不打开

时间:2017-06-28 19:02:02

标签: excel vba excel-vba ms-word word-vba

我有一张嵌有Microsoft Word OLE对象的Excel表格。

我的嵌入式Word文档包含一些应使用特定单元格更新的字段。

我需要打印该嵌入式文档的内容, 没有 可见文档打开和" 更新文档提示"

我的问题是在没有更新提示的情况下,在不可见的Word文档中复制嵌入Word的OLE对象的内容。

我试试这个:

此代码在目标可打印文档中的嵌入式Word文档周围绘制一个框。

请帮我复制嵌入式文档的内容或...,并打印嵌入式文档而不更新提示和可见窗口。

Sub PrintIt(P As String, w, h As Double)
    Dim objWord As Object
    Dim ObjDoc As Object

    Application.ScreenUpdating = False

    Set objWord = CreateObject("Word.Application")
    objWord.Visible = False

    ActiveSheet.OLEObjects(P).Copy

    Set ObjDoc = objWord.Documents.Add
    ObjDoc.PageSetup.PageWidth = objWord.CentimetersToPoints(w)
    ObjDoc.PageSetup.PageHeight = objWord.CentimetersToPoints(h)
    ObjDoc.Content.Paste

    ObjDoc.PrintOut Background:=False
    ObjDoc.PrintOut

    objWord.Quit SaveChanges:=False
    Application.ScreenUpdating = True
End Sub 'Print it

1 个答案:

答案 0 :(得分:0)

Sub PrintIt(P As String)
Dim objWord As Object
Dim ObjDoc As Object
Dim Oshp As Object

Application.ScreenUpdating = False

ActiveSheet.OLEObjects(P).Activate
Set objWord = GetObject(, "Word.Application")
objWord.Visible = False

Set ObjDoc = objWord.ActiveDocument

ObjDoc.Fields.Update
For Each Oshp In ObjDoc.Content.ShapeRange
    Oshp.TextFrame.TextRange.Fields.Update
Next

ObjDoc.PrintOut Background:=False
ObjDoc.PrintOut

objWord.Quit SaveChanges:=False
Application.ScreenUpdating = True
End Sub 'Print it