2009-05-12 15 views
0

私はMS Wordテーブルでいくつかのデータを処理し、Excelで操作する必要がありました。 私はVBAサブルーチンを使って「時間を節約する」という言葉からそれを得ることにしました。 私のソースワード文書は、twentysomethingテーブルのように含まれています。WordからExcelにコピーするためのテーブルを作成する

ソースドキュメントのテーブルを取り出し、データを抽出して新しいテーブルを作成しました。コピーしてExcelに貼り付けるだけで済みました。

ただし、コピーする前の最終表は正しく表示されますが、 Excelにコピーすると、段落全体を含むセルが別のセルに分割されます。

大部分の人が知っているように、ソリューションはExcelのように見えますが、マージとセンターを実行しても、選択範囲の最上部のセルのコンテンツのみが保存されます。

したがって、より良いマージとセンター、またはより良い「タイムセーバー」のアドバイスは、素晴らしいものになります。ここで

は、これまでのコードのサンプルです:

Sub First() 

Dim tableLength, tableIndex 
tableLength = ThisDocument.Tables.Count 

Dim tblReport As Table 
Dim docReport As Document 

Set docReport = Documents.Add 
Set tblReport = docReport.Tables.Add(Selection.Range, 1, 2) 

With tblReport 

Dim fieldOne, subvalueAription, subvalueA, subvalueB, subvalueC 

For tableIndex = 1 To tableLength 

    fieldOne = ThisDocument.Tables(tableIndex).Rows(2).Cells(2).Range.Text 
    subvalueA = Trim(ThisDocument.Tables(tableIndex).Rows(4).Cells(2).Range.Text) 
    subvalueB = "A: " & Trim(ThisDocument.Tables(tableIndex).Rows(5).Cells(2).Range.Text) 
    subvalueC = "B: " & Trim(ThisDocument.Tables(tableIndex).Rows(6).Cells(2).Range.Text) 
    subvalueAription = subvalueA & subvalueB & subvalueC & "C: " 

    Dim rowNext As row 
    Set rowNext = .Rows.Add 
    rowNext.Cells(1).Range.Text = fieldOne 
    rowNext.Cells(2).Range.Text = subvalueA & subvalueB & subvalueC 


Next 

End With 


End Sub 
+0

だから私はそれを回避し、実際のテーブル作成をExcelで実行します。 乾杯! – Irwin

答えて

0

エクセルは、Wordとは異なるラインターミネータを使用しています。 Wordテーブルのテキストが複数のExcelセルに分割される問題を回避するには、行末変換を自分で処理する必要があります。

'Word > Excel 
newText = Replace(wordText, vbCrLf, vbLf) 

これはメモリでポストしていますが、それはその問題の根本です。