2017-08-28 61 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