2016-04-11 11 views
1

数百のセルがあり、ExcelからWordテーブルに貼り付ける必要があります。 ExcelのVBA> word内にデータを挿入する方法(つまり「単語表のセル= 1」)を理解しましたが、問題なく動作しますが、1つのExcelセルを1つの単語表のセルにコピーしています。セルデータをExcelからWordにコピー

私のコードは、現在、次のとおりです。

'Do the For Loops here, WIP 
For Each Cell In ActiveSheet.UsedRange.Cells 
    'do some stuff 

    For Each oRow In wdDoc.Tables(1).Rows 
    For Each oCell In oRow.Cells 

    ' Set sCellText equal to text of the cell. 
    ' Note: This section can be modified to suit 
    ' your programming purposes. 
    If ((oCell.Column.Index Mod 2) = 0) Then 

    Else 
    'counter = counter + 1 

    'oCell.Range.Text = ThisWorkbook.Sheets(1).Cells(1, 2).Value 
    oCell.Range.Text = Cell 

    End If 

Next oCell 
Next oRow 
Next 

何それは現在ありませんが、すべて単一の単語テーブルセルに、最初のExcelのセルをコピーしています。 2番目のExcelセルにヒットすると、他のすべてのワードテーブルセルが上書きされます。

Image Not Working

私は起こるしたいもの::現在何が起こっているかの以下

ピクチャー(は、最初のセルをエクセル読み込みWordの表のセルにペーストをコピー - 第二のセルをエクセル読み込み、ペーストをコピーします。第2ワードの表のセルへ。

DesiredOutput

おかげで、

アレックス。

+0

WordとExcelで同じサイズのテーブルがありますか?あなたは途中でループが多すぎます、あなたはただ一つだけ必要です。 – vacip

+0

類似のサイズ - 正確に同じサイズではありません。 1つのループでどうすればいいですか?私は正確な細胞の数を知らないので、Cell(1,1)などと言うことを避けようとしていました。 乾杯。 – Javanoob33

答えて

2

このコードは、このトリックを行う必要があります。それはとにかく私のテストで働いていた:それはその機能を発揮なるように

Dim firstRow As Integer 
Dim firstColumn As Integer 
Dim numRows As Integer 
Dim numColumns As Integer 

Dim uRange As Range 

Set uRange = ActiveSheet.UsedRange 
firstRow = uRange.Row 
firstColumn = uRange.Column 
numRows = uRange.Rows.Count 
numColumns = uRange.Columns.Count 

Dim rowNumber As Integer 
Dim columnNumber As Integer 
Dim tableRow As Integer 
Dim tableColumn As Integer 
tableRow = 1 
tableColumn = 1 

Dim tableRows As Integer 
Dim tableColumns As Integer 
tableRows = doc.Tables(1).Rows.Count 
tableColumns = doc.Tables(1).Columns.Count 

For rowNumber = firstRow To firstRow + numRows - 1 
    For columnNumber = firstColumn To firstColumn + numColumns - 1 
     doc.Tables(1).Cell(tableRow, tableColumn).Range.Text = Cells(rowNumber, columnNumber).Value 
     tableColumn = tableColumn + 2 
     If tableColumn > tableColumns Then 
      tableColumn = 1 
      tableRow = tableRow + 1 
     End If 
     If tableRow > tableRows Then 
      Exit Sub 
     End If 
    Next 
Next 

は、私は意図的に異なるサイズの入力と出力の範囲を選択しました。

Excelシート(入力):

enter image description here

ワードページ(出力):

enter image description here

この方法では、あなたはそれがその後の行を読みたいかどうかを制御できます列、または列、次に行。

UsedRange関数が必ずしも適切な結果を返すとは限りません。あなたが望むよりも広い範囲を与える場合があります。

+0

それはすごいです、ありがとう!完璧に動作します。私が笑っていたものよりもはるかにきれいです。 – Javanoob33

関連する問題