2017-08-28 31 views
2

我在Excel工作表中嵌入了Word文档(*.docm)将变量从XLSM传递到嵌入式DOCM

Word文档包含一个table,它在Excel的WorkSheet中的相应Table之间有关系。

我想一直在Document_Open事件动态设置嵌入Word文档表中的行数,与波纹管的值,其涉及到工作表:

ThisWorkbook.Worksheets("Sheet1").ListObjects("Salary").ListRows.Count 

如何传递的Excel之间的值(宏容器文档)及其嵌入的宏容器的word文档? - 如果它是针对上述大胆问题的正确答案或其他解决方案?

如果有另一种解决方案的答案,请注意,涵盖需要:

填充目的地表(即在嵌入的Word文档)与来自源数据对应值的细胞在从工作表的父表?,相同代替自动生成来自宏容器嵌入式文档的Document_Open事件的字段。

回答

1

我建议嵌入.docx文档,以避免每次打开宏时禁用警报,并将所有代码放在Excel VBA项目中。下面是示例,显示如何在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 
+0

With thanks;因此,我扩展了问题:然后,我们如何填充来自源数据的相应值的目标表格(即嵌入式文档文件中)来自'Worksheet'的父表'',**反对与自动生成字段与' Document_Open'来自嵌入式word文档的事件** – mgae2m

+0

@MaeaeM在答案中,我建议**不要使用嵌入文档**中的VBA和事件,而是从Excel VBA中执行它。 – omegastripes

+0

那么,我们如何填充来自源数据的相应值的目标表格(即在嵌入式文档文件中)的单元格在源'表格'位于'工作表格'中?似乎需要从Excel模块运行一些Word方法作为'Selection.TypeText Text:= ...',或者更好地填充嵌入式word文档中的表格。我们如何在Excel模块中使用Word方法,传递变量或更好的方式来做到这一点?当我提出上述问题时,请将涉及此事的答复延伸。 – mgae2m