我的Excel工作表中有一个嵌入的Word文档(*.docm)
。
Word文档包含table
,其与Excel Table
中相应的WorkSheet
之间存在关联。
我希望嵌入式Word文档中的表行数已在Document_Open
事件中动态设置,其值低于其涉及的工作表:
ThisWorkbook.Worksheets("Sheet1").ListObjects("Salary").ListRows.Count
如何在Excel(宏容器文档)及其嵌入式宏容器word文档之间传递值? - 如果它是上述大胆问题的正确答案 - 或其他解决方案?
如果有其他解决方案的答案,请注意需要:
填充目标表(在嵌入的Word文档中)具有来自源数据的相应值的单元格在Worksheet?中的父表中,而不是使用来自宏容器嵌入的word文档的Document_Open事件的自动生成字段。
答案 0 :(得分:1)
我建议嵌入.docx文档以避免每次打开时禁用宏警报,并将所有代码放在Excel VBA Project中。下面是一个示例,显示如何从Excel VBA更改嵌入式Word文档中的行数:
Sub ChangeRowsCount()
Dim n As Long
With ThisWorkbook.Worksheets("Sheet1")
n = .ListObjects("Table1").ListRows.Count
With .Shapes("Object 1")
Select Case True
Case .Type <> msoEmbeddedOLEObject
MsgBox "Invalid OLE Object type"
Case InStr(1, .OLEFormat.progID, "Word.Document", vbTextCompare) <> 1
MsgBox "Invalid Application"
Case Else
.OLEFormat.Object.Verb xlVerbOpen
With .OLEFormat.Object.Object.Parent ' Word.Application
With .ActiveDocument.Tables(1).Rows
Do While .Count <> n
If .Count > n Then .Item(.Count).Delete Else .Add
Loop
End With
.Quit
End With
.Select
MsgBox "Success"
End Select
End With
End With
End Sub