VBAを使ってWord文書からExcelシートへのデータ転記方法(特定文字列の抽出と転記)

Visual Basic

VBAを使ってWord文書からExcelシートへデータを転記する際、特定の文字列を抽出してその隣の文字列を転記する方法について解説します。この記事では、Word文書内の「対象期間」と「株式会社」など、特定の文字列の隣にある情報をExcelシートに転記する方法を紹介します。

1. 基本のVBAコード

まず、Word文書からExcelにデータを転記する基本的なVBAコードを作成します。以下のコードでは、Word文書の3行目をExcelのA1セルに、また「対象期間」という文字列の右隣にあるテキストをExcelのA2セルに転記する処理を行っています。

Dim wd_app As Object 'Word.Application
Dim win As Object, pg As Object
Dim rc As Object, ln As Object
Dim cnt As Long

Const strTarget As String = "対象期間:"

Set wd_app = GetObject(Class:="Word.Application")
Set win = wd_app.ActiveWindow
cnt = 1
For Each pg In win.ActivePane.Pages
For Each rc In pg.Rectangles
For Each ln In rc.Lines

If cnt = 3 Then Sheets("sheet1").Range("A1").Value = ln.Range.Text

If InStr(ln.Range.Text, strTarget) > 0 Then
'"対象期間:"の、右隣にある文字列
Sheets("sheet1").Range("A2").Value = Replace(ln.Range.Text, strTarget, "")
GoTo endPrc
End If
cnt = cnt + 1
Next ln
Next rc
Next pg
endPrc:

このコードでは、特定のページのテキストをExcelに転記しています。

2. 「株式会社」の隣の文字列を転記する方法

次に、「株式会社」という文字列の右隣にあるテキストをExcelのA3セルに転記する方法を追加します。基本的な考え方は、「対象期間」の処理と同様です。ただし、今回は2ページ目に「株式会社」があるため、該当ページを確認し、その隣の文字列を抽出します。

If InStr(ln.Range.Text, "株式会社") > 0 Then
'"株式会社"の右隣の文字列
Sheets("sheet1").Range("A3").Value = Trim(Mid(ln.Range.Text, InStr(ln.Range.Text, "株式会社") + Len("株式会社")))
GoTo endPrc
End If

上記のコードでは、「株式会社」を含む行を見つけ、その右隣にある文字列を抽出してA3セルに転記します。

3. 注意点と改善案

VBAコードを使用する際、以下の点に注意してください。

  • 複数行にまたがる文字列がある場合、行ごとにテキストを取得して処理を分ける必要がある場合があります。
  • 「株式会社」などの特定の文字列が複数回出現する可能性があるため、最初に見つかった文字列だけを処理するように調整することが必要です。
  • Excelシートにデータを転記する際には、範囲の設定や既存のデータが上書きされないように工夫する必要があります。

4. まとめ

このVBAコードを使用することで、Word文書からExcelシートに特定の文字列の右隣のデータを転記することができます。具体的には、「対象期間」や「株式会社」などの文字列を検索し、その隣にある情報をExcelに転記する方法を紹介しました。データ転記の効率化を目指す場合、VBAを活用することが非常に有効です。

コメント

タイトルとURLをコピーしました