如何在Excel中嵌入的文档中修改Word表

时间:2019-01-15 15:48:33

标签: excel vba ms-word

到目前为止,我已经能够激活嵌入在Excel中的Word文档,但无法修改表格的preferredwidth。如何通过Excel VBA访问此属性?

这是我到目前为止所拥有的

Sub ok()

Set WDObj = Sheets("Sheet1").OLEObjects("Object 4")

WDObj.Activate
WDObj.ActiveDocument.Tables(1).PreferredWidthType = wdPreferredWidthPercent
WDObj.ActiveDocument.Tables(1).PreferredWidth = 95

End Sub

1 个答案:

答案 0 :(得分:0)

要修改嵌入式Word文档的内容,首先需要访问嵌入式应用程序,然后是文档本身。一旦代码访问了OLEObject,它就需要实际的Object,通过它可以寻址应用程序和文档。

请注意,为OLE对象分配一个名称而不是依靠Excel生成的名称可能是方便的。如果添加了其他对象或删除了其他对象,则此类名称会发生​​变化的讨厌趋势。明确分配的任何名称都将保持不变。只需在工作表上运行一次(基于完整的示例代码):

ws.OLEObjects("Object 4").Name = "WordDoc" 'for example, can be any string you prefer

然后,如果您决定执行此操作,则在完整代码中为ws.OLEObjects("WordDoc")

在过程结束时,行ws.Cells(1, 1).Select通过在工作表上选择一个单元格来停用嵌入的对象。如果要让Word文档处于活动状态以供用户使用,只需删除该行即可。

Sub ok()
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    Dim doc As Object 'Word.Document
    Dim wdObj As Object, wdTable As Object 'Word.Table

    Set wb = ActiveWorkbook
    Set ws = wb.Sheets("Sheet1")
    Set wdObj = ws.OLEObjects("Object 4")
    wdObj.Activate
    Set doc = wdObj.Object.Application.ActiveDocument
    Set wdTable = doc.Tables(1)
    wdTable.PreferredWidthType = 2 ' Word.WdPreferredWidthType.wdPreferredWidthPercent
    wdTable.PreferredWidth = 95
    ws.Cells(1, 1).Select
End Sub