2016-07-12 49 views
0

ドキュメントにプレーンテキストコンテンツコントロールを配置しました。ExcelのデータをWordのContentControlに取得する方法

私はマクロを開き、私はすべてのレガシーを使用しないように言われている次のコード

Sub PrefillDocument() 
' 
' PrefillDocument Macro 
' 
' 
    Dim docName As ContentControls 
    Dim objExcel As Object 
    Dim FileName As String 
    FileName = ActiveDocument.Path & "\CountyData.xlsx" 
    Set objExcel = CreateObject("Excel.Application") 
    Set exWb = objExcel.Workbooks.Open(FileName) 
    MsgBox exWb.Sheets("4").Cells(1, 2) // Works 

    ' Having problems trying to get the data from Excel into the content control 
    Set docName = ActiveDocument.SelectContentControlsByTag("Name") // Get 

    docName.Item.Title = exWb.Sheets("4").Cells(1, 2) 
    MsgBox docName.Title 
    'ActiveDocument.FormFields("Name").Result = 
    'ThisDocument.m_name.Caption = exWb.Sheets("Member's Data").Cells(2, 1) 

    exWb.Close 
    Set exWb = Nothing 
End Sub 

を持っているので、私は

答えて

1

DOCNAMEは、コントロールのコレクションである新しいContentControlsを使用するように強制しています制御しますこの場合、Wordはコレクション内のすべてのコントロールにタイトルを適用させません。

だから、反復する必要があります。

Dim cc as ContentControl 
For Each cc In docName 
    cc.Title = exWb.Sheets("4").Cells(1, 2) 
Next 

またはあなたはおそらくあなたのDOCNAME宣言をドロップすると、コントロールの実際の内容ではなく、タイトルを更新するために、あなたはコメントで掲示質問について

Dim cc as ContentControl 
For Each cc In ActiveDocument.SelectContentControlsByTag("Name") 
    cc.Title = exWb.Sheets("4").Cells(1, 2) 
Next 

を行うことができ、あなたが知っている必要があります内容が単語範囲で表され、範囲のテキストを設定する必要があることを示します。

cc.Range.Text = exWb.Sheets("4").Cells(1.2) 

さらに、コントロールのコレクションを反復処理する必要があります。

+0

実際の名前に変更するには、印刷可能なテキストが必要です。タイトルは変更されましたが、実際の印刷可能なテキストは変更されません –

+1

コントロールの* content *を意味すると仮定すると、これは別の質問ですが、コントロールの別のプロパティに割り当てるだけで済みます。 VB EditorからView-> Object Browser経由でVBAを操作するときに非常に便利なツールです。私は自分の答えを変更します。 –

関連する問題