多くの場合、ExcelファイルからWord文書にデータをコピーする必要があります。これは、マクロを使用して非常に簡単に行うことができます。マクロは、新しい/既存のワードdocを開き、内容をコピーしてから、ワードdocを保存して閉じます。これがどのように行われるかを見てみましょう。

使用できるコードは– Option Explicit _Sub CreateNewWordDoc()

Dim i As Integer Dim wrdApp As Object、wrdDoc As Object Set wrdApp = CreateObject(“ Word.Application”)

wrdApp.Visible = True Set wrdDoc = wrdApp.Documents.Add With wrdDoc For i = 1 to 100 .Content.InsertAfter“ Here is a example test line#”&i .Content.InsertParagraphAfter Next i If Dir(“ B:\ Test \ MyNewWordDoc.docx”)<>“”次に、“ B:\ Test \ MyNewWordDoc.docx” .SaveAs(“ B:\ Test \ MyNewWordDoc.docx”)を強制終了します

Close End With wrdApp.Quit Set wrdDoc = Nothing Set wrdApp = Nothing End Sub_上記のコードをファイルにコピーするには、キーボードのAlt + F11を押します。左側にMicrosoftExcelオブジェクトが表示されます。右クリックして[挿入]を選択します。次に、[モジュール]をクリックします*コードを右側のコードウィンドウにコピーします。このコードがどのように機能するかを見てみましょう。最初に、必要な変数を宣言します。– iを整数として宣言し、ExcelファイルからWordDocに入力される各行をインクリメントします。次に、2つのオブジェクト変数wrdAppとwrdDoc、wrdAppはWordアプリケーションオブジェクト、wrdDocはWordドキュメントオブジェクトです。

Set wrdApp = CreateObject(“ Word.Application”) Wordがシステムですでに実行されている場合、_CreateObject_はWordの新しいインスタンスを作成します。したがって、この行は、オブジェクト変数wrdAppをWordアプリケーションに割り当てます。これはコードの後半で使用できます。 。

_wrdApp.Visible = True_新しく作成されたWordのインスタンスは、作成時に表示されません。表示するには、wrdApp.Visible = Trueを設定して表示する必要があります。

Set wrdDoc = wrdApp.Documents.Add Wordアプリケーションの新しいインスタンスを作成しましたが、空白のWordドキュメントをまだ開いていません。したがって、このコマンドは新しいWord文書を開きます。オブジェクトwrdDocがこの新しいドキュメントに割り当てられているため、コードの後半で使用できます。

新しいブックを開きたくないが既存のブックを開く場合は、この行を_Set wrdDoc = wrdApp.Documents.Open(“ B:\ My Documents \ WordDocs \ Doc1.docx”)_に置き換えることができます。指定された場所に保存されている既存のWord文書。

_WithwrdDoc….EndWith_これはwrdDocオブジェクトで完全に機能する「With」ループです。このループを開くと、このループで「wrdDoc」というテキストを再度繰り返す必要はありません。直接開始できます。ドット(「。」)

wrdDocに関連するオブジェクトの前。このループは_EndWith_ステートメントで終了します。 End Withステートメントを入力すると、wrdDocの後のオブジェクトを「。」だけで参照することはできません。

_For i = 1〜100 .Content.InsertAfter「ここにテスト行番号の例があります」&i .Content.InsertParagraphAfter Nexti_これは「For」ループです。 1から100までインクリメントし、インクリメントするたびに、「テスト行番号の例です」というテキストの行を挿入してから、インクリメント番号を追加します。次に、改行/段落ブレークを挿入して、次のインクリメントがに表示されるようにします。次の行、新しい段落のように。

したがって、forループの状態はFor i = 1から100であるため、このプロセスは100回繰り返されます。これが得られる出力です–

img2

If Dir(“ B:\ Test \ MyNewWordDoc.Docx”)<>“” Then Kill“ B:\ Test \ MyNewWordDoc.docx” _ _ .SaveAs(“ B:\ Test \ MyNewWordDoc.docx”) .Close 「For」ループが完了すると、コードはファイルMyNewWordDoc.docxが存在するかどうかを確認します。存在する場合は削除します。次に、新しいファイルを同じ名前で保存し、ファイルを閉じます。

wrdApp.Quit Set wrdDoc = Nothing Set wrdApp = Nothing Wordアプリケーションが閉じられ、作成された2つのオブジェクトが解放されるか、「Nothing」に設定されるため、これらのオブジェクトが占有していたメモリが解放されます。これは、ExcelからWordへのコンテンツのコピーを処理するコード全体です。

image 48