ここから本文です

ワードのヘッダーに入力してある文字列をエクセルで一覧化したいです。

iss********さん

2019/8/721:28:00

ワードのヘッダーに入力してある文字列をエクセルで一覧化したいです。

あるWordファイルは、ページ毎にヘッダーに入力されている文字列が異なります。
このヘッダーに入力されている文字列をExcelに書き出したいです。

このような作業を実行するExcelマクロのコードを御教示ください。対象となるWordファイルは一つです。

よろしくお願いします。

【補足:経緯について】
社内の職員にワード様式で回答を求め、その回答を集約すべく、一つのWordファイルに各回答を集約し、集約されたWordファイルの各個票からExcelに回答を書き出しましたが、職員名等を個票に組み込むのを忘れていました。
幸い各Wordファイルには、職員名を記載するよう指示しており、各ワードファイルを結合する際に、ヘッダーに各Wordファイルのファイル名を入力するようにしていたため、このヘッダーに記載のあるファイル名を抽出すれば良いと考えたのが、経緯です。

閲覧数:
33
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

Prometheusさん

2019/8/722:50:13

マクロを走らせているエクセルブックが保存されているフォルダ内の「Header.docx」のヘッダを列「A」の1行目から書き出します。

Sub Sample()
Dim wd As Object, dc As Object
Dim i As Long
Set wd = CreateObject("Word.Application")
Set dc = wd.Documents.Open(ThisWorkbook.Path & "\Header.docx")
For i = 1 To dc.Sections.Count
Cells(i, "A").Value = dc.Sections(i).Headers(1).Range.Text
Next i
dc.Close
wd.Quit
Set dc = Nothing
Set wd = Nothing
MsgBox ("Finished!")
End Sub

簡単な説明です。

For i = 1 To dc.Sections.Count

「dc.Sections.Count」が、そのドキュメントの持っている「セクション」の数です。

すなわち、セクションの数だけ繰り返します。

Cells(i, "A").Value = dc.Sections(i).Headers(1).Range.Text

「dc.Sections(i).Headers(1).Range.Text」は、それぞれのセクションのヘッダのテキストを取得しています。

「Headers(1)」の「1」は「wdHeaderFooterPrimary」ですが、エクセルから「wd~」というワードの「VBA」専用のものは使えませんので、その値「wdHeaderFooterPrimary=1」(ワードのイミディエイト・ウィンドウで確認できます)、数値を使います。

参照したのは、以下のマクロソフトのサイトです。

https://docs.microsoft.com/ja-jp/office/vba/api/word.headersfooters

dc.Close
wd.Quit
Set dc = Nothing
Set wd = Nothing
MsgBox ("Finished!")

ドキュメントを閉じ、ワードそのものを終了し、最後に「Finished!」と表示しています。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる