Wordオブジェクトモデルには、範囲の概念があります。プログラムで作業したい現在のテキストブロックと考えることができます。
この行:
objDoc.Tables.Add objRange, intNoOfRows, intNoOfColumns
は、与えられた範囲(objRange
)に新しいテーブルを追加します。
documentation for the Add
methodにおけるパラメータリストを見ると、我々は(強調追加)以下を参照してください。
名:範囲
説明:あなたは、テーブルを表示する範囲を。 範囲が縮小されていない場合は、表が範囲を置き換えます。
あなたのコードの前の行を見て:
Set objRange = objDoc.Range
範囲は、文書全体に及びます。これは他のテーブルだけでなく、ドキュメント内の他のテキストも置き換えるため、おそらくあなたが望むものではありません。
範囲を縮小するには、Collapse
methodに電話してください。範囲は、2つの方法で崩壊することができます。範囲の終わりが範囲の開始に移動するか、範囲の開始が範囲の終わりに移動する必要があります。
'objRange.Collapse wdCollapseEnd
objRange.Collapse 1
あなたは範囲を崩壊したら、あなたは新しいテーブルを追加することができます。この動作はCollapse
方法、またはそれらと同等の値にwdCollapseStart
またはwdCollapseEnd
に渡すことによって制御されています。
objDoc.Tables.Add objRange, intNoOfRows, intNoOfColumns
N.B.あなたのコードはレイトバインディングを使用しています。これは、エディタが使用しているさまざまなオブジェクトの形状を認識していないことを意味します。
(ツール - >参照...)の参照を追加し、この情報をエディタを提供するために、Microsoft Wordのオブジェクトモデル(または類似したもの)に。あなたは、変数を宣言するときに
その後、あなたは自分のタイプを指定できます。今すぐ
Dim objDoc As Word.Document
を、あなたはoDoc.
を書くとき、エディタは、Word文書の利用可能なメソッドとプロパティを伝えることができます。
このコードには別の問題があります。テーブルが挿入されると、テーブルには数行の処理が行われます。しかし、処理は、文書の中で最も最近追加されたテーブル上で行われることはありませんが、むしろ常に文書の最初のテーブルの上:
objDoc.Tables.Add objRange, intNoOfRows, intNoOfColumns
Set objTable = objDoc.Tables(1) 'reference to the first table in the document
この問題を解決する最も簡単な方法は、参照を追加することから返さ用いることであろう表:
Dim objWord As New Word.Application
'in production, keeping the application invisible is often more performant
'but while debugging, it's useful to see what's going on in the application
objWord.Visible = True
Dim objDoc As Word.Document
Set objDoc = wdApp.Documents.Add
Dim objRange As Word.Range
Set objRange = objDoc.Range
objRange.Collapse wdCollapseEnd
Dim intNoOfRows As Integer
intNoOfRows = 5
Dim intNoOfColumns As Integer
intNoOfColumns = 3
Dim objTable As Word.Table
Set objTable = objDoc.Tables.Add(objRange, intNoOfRows, intNoOfColumns)
'Fill the table here
'Collapse the range again (not sure this is needed)
objRange.Collapse wdCollapseEnd
'Now you can add a new table:
Set objTable = objDoc.Tables.Add(objRange, intNoOfRows, intNoOfColumns)
おそらくN君:
最終的なコードは次のようなものを見ることができますあなたが挿入するために使用している範囲を崩壊するためにeed?しかし、コードなしで知ることは不可能です。 –
シュート、それは私が思ったようにペーストしなかった – user8426180
http://excel-macro.tutorialhorizon.com/vba-excel-add-table-and-fill-data-to-the-word-document/ – user8426180