2011-04-06 9 views
0

こんにちは私は次のコードを使用してExcelワークシートの値をWordの定義済みのテーブルにコピーしています。以下は1列でうまく動作しますが、どのようにして5列すべてのデータを転送できますか?おかげ複数の列でExcelからWordにデータをエクスポートする

Sub ExportData() 

Dim wdApp As Word.Application 
Dim wdDoc As Word.Document 
Dim wdCell As Word.Cell 
Dim i As Long 
Dim wbBook As Workbook 
Dim wsSheet As Worksheet 
Dim rnData As Range 
Dim vaData As Variant 

Set wbBook = ThisWorkbook 
Set wsSheet = wbBook.Worksheets("Sheet1") 

With wsSheet 
    Set rnData = .Range("A1:E10") 
End With 

'Add the values in the range to a one-dimensional variant-array. 
vaData = rnData.Value 

'Here we instantiate the new object. 
Set wdApp = New Word.Application 

'Here the target document resides in the same folder as the workbook. 
Set wdDoc = wdApp.Documents.Open(ThisWorkbook.Path & "\Test.doc") 

'Import data to the first table and in the first column of a table in Microsoft Word. 
For Each wdCell In wdDoc.Tables(1).Columns(1).Cells 
    i = i + 1 
    wdCell.Range.Text = vaData(i, 1) 
Next wdCell 

'Save and close the document. 
With wdDoc 
    .Save 
    .Close 
End With 

'Close the hidden instance of Microsoft Word. 
wdApp.Quit 

'Release the external variables from the memory 
Set wdDoc = Nothing 
Set wdApp = Nothing 
MsgBox "The data has been transfered to Test.doc, vbInformation" 

End Sub 

答えて

1

は、これは後半の答えのビットですが、以下試してください。

宣言に追加

Dim j As Long 

宣言から削除

Dim rnData As Range 

ReDim vaData(1 To 10, 1 To 5) 

With wsSheet 
    vaData = .Range("A1:E10") 
End With 

そして

'Import data to the first table and in the first column of a table in Microsoft Word. 
For Each wdCell In wdDoc.Tables(1).Columns(1).Cells 
    i = i + 1 
    wdCell.Range.Text = vaData(i, 1) 
Next wdCell 

を変更する変更

With wsSheet 
    Set rnData = .Range("A1:E10") 
End With 

'Add the values in the range to a one-dimensional variant-array. 
vaData = rnData.Value 

For j = 1 To 5 i = 0 For Each wdCell In wdDoc.Tables(1).Columns(j).Cells i = i + 1 wdCell.Range.Text = vaData(i, j) Next wdCell Next j 

補正

MsgBox "The data has been transferred to Test.doc", vbInformation 
+0

+1非常にうまくフォーマットさ答え – Johan

関連する問題