Word文書からExcelファイルにデータをコピーしなければならない場合があります。これは、すべてのバージョンのOfficeのマクロを使用して非常に簡単に実行できます。マクロは、既存/新しいExcelファイルを開き、内容をコピーしてから、ファイルを保存して閉じます。これがどのように行われるかを見てみましょう。

Option Explicit __ Sub OpenAndReadWordDoc()

Dim tString As String Dim p As Long、r As Long Dim wrdApp As Object、wrdDoc As Object Dim wb As Workbook Dim trange As Variant _Set wb = Workbooks.Add With wb.Worksheets(1).Range( “A1″)

Value =“ Word文書の内容:” .Font.Bold = True .Font.Size = 14 .Offset(1,0).Select End With_ r = 3 _Set wrdApp = CreateObject(“ Word.Application”)

wrdApp.Visible = True Set wrdDoc = wrdApp.Documents.Open(“ B:\ Test \ MyNewWordDoc.docx”)_ With wrdDoc For p = 1 to .Paragraphs.Count Set trange = .Range(Start:=。Paragraphs(p ).Range.Start、 End:=。Paragraphs(p).Range.End)

tString = trange.Text tString = Left(tString、Len(tString)-1)_ If Instr(1、tString、” 1”)> 0 Then wb.Worksheets(1).Range(“ A”&r).Value = tString r = r + 1 End If Next p .Close End With wrdApp.Quit Set wrdDoc = Nothing Set wrdApp = Nothing wb.Saved = True _End Sub_上記のコードをファイルにコピーするには、キーボードのAlt + F11を押します。左側に、Microsoft Excelオブジェクトが表示されます。右クリックして[挿入]を選択し、[モジュール]をクリックします。*コードを右側のコードウィンドウにコピーします。次に、このコードがどのように機能するかを確認します。まず、必要な変数を宣言します。テキストを保持する文字列(後でどのテキストを確認します)。カウンターとしての2つの変数「p」と「r」。これらは「長い」タイプです。次に、2つのオブジェクト変数wrdAppとwrdDocがあります。 wrdAppはWordアプリケーションオブジェクトであり、wrdDocはWordドキュメントオブジェクトです。 Wbは、コードで作成された新しいブックのワークブック変数です。既存のブックを開いている場合は、代わりにこの変数をそれに割り当てることができます。最後の変数は、単語docからExcelファイルに転送する必要のある内容を持つ変数のtrangeバリアントタイプです。

_Set wb = Workbooks.Add_これにより、新しいワークブックがwb変数に割り当てられます。新しいブックを追加せずに既存のブックを開く場合は、次のようにこの行を変更できます– * Set wb – Workbooks.Open(“ B:\ Test \ File1.xlsx”) _With wb.Worksheets( 1).Range(“ A1”)

Value =“ Word Document Contents:” .Font.Bold = True .Font.Size = 14 .Offset(1,0).Select End With_ The With wb.Worksheets(1).range(“ A1”)は簡単ですそれを参照する方法。したがって、WithステートメントとEndwithステートメントの間のコード行ごとにこれを繰り返す必要はありません。

これらのコード行は、新しいワークブックの1 ^ st ^ワークシートのセルA1に、太字のフォントとフォントサイズ14で「WordDocumentContents:」というテキストに配置されています。次に、.Offset(1,0).Selectは次の行を選択します。

_r = 3_変数「r」には値3が割り当てられます。これは、Word文書からコピーされるデータのExcelファイルの開始行であるためです。

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

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

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

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

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

_For p = 1 to .Paragraphs.Count_これは、Word文書の最初の段落から最後の段落までループする「For」ループです。データを含むワードファイルには100行の情報があり、それぞれが個別の段落として保存されています。ループは1から100にインクリメントし、段落をコピーします。特定の条件が設定されている場合、コピー貼り付けはそれらの条件に基づいて行われます。

_Set trange = .Range(Start:=。Paragraphs(p).Range.Start、End:=。Paragraphs(p).Range.End)_これにより、ループの増分に応じて、各段落の開始と終了が範囲に割り当てられます。

_tString = trange.text tString = Left(tString、len(tString)-1)_最初に、trangeからのテキストがTStringに渡されます。次に、各段落の文末に段落文字があります。これは、Left関数を使用して削除されます。左側から、最後の文字を除くすべての文字がtString変数に格納されます。

_If Instr(1、tString、“ 1”)> 0 Then wb.Worksheets(1).Range(“ A”&r).Value = tString r = r + 1 End If_このIF関数は、tStringのテキストに次のものが含まれているかどうかをチェックします。数値1。trueの場合、tStringの内容をワークブックの次の使用可能な行にコピーします。 「r」の最初の値は3でした。r= r + 1を使用して1ずつインクリメントし、次のエントリを前のエントリの下に配置できるようにします。

_Next p.Close_コードの_Nextp_行は、次の段落にインクリメントされます。

_.Close_は、すべての段落が処理されたら、ドキュメントを閉じます。これは、Excelファイルで取得する出力です–

img1

番号のどこかに番号1が含まれている段落のみが出力に含まれていることがわかります。

wrdApp.Quit Set wrdDoc = Nothing Set wrdApp = Nothing wb.Saved = True wrdApp.Quitは、アプリケーションという単語を閉じます。 Set wrdDoc = NothingおよびSetwrdApp = Nothingは、これら2つのオブジェクト変数が使用していたメモリを解放し、それらをNothingに設定します。 wb.Saved = Trueはブックを保存します。

上記のコードを使用して、WordファイルからExcelファイルにコピーするデータを制御できます。

image 48