tamago8610のブログ

日々の勉強を備忘録としてブログを書いています。

VBAでWordを動かすときによく使うコードまとめ

 ※注意

自分用にまとめた記事なので、かなり省略しています。

 

 

 

Wordと連携する前に理解しておかなければいけないオブジェクトの構造階層

f:id:tamago8610:20210501203441j:plain

Wordのオブジェクト階層

Rangeオブジェクトは、Wordに入力された文字のことを指します。

WordのApplication内に、Documentオブジェクトの文書があり、さらに段落のParagraphs(読み:パラグラフ)オブジェクト、表のTablesオブジェクトがあり、それぞれにRangeオブジェクトが入っています。

Paragraphsオブジェクト、Tablesオブジェクトは複数形のSが付くので、コレクションになります。

 

オブジェクトライブラリを参照設定に追加

まず、Excelで参照設定を行う。

Microsoft Word xx(バージョン番号) Object Libary」にチェックをする。

 

Wordを開いてドキュメントを操作できるように宣言 

f:id:tamago8610:20210502101246p:plain

Word文書を開くための宣言

Wordアプリケーションを格納する変数を宣言して、さらにWordアプリケーションを格納した変数を使って、Word文書を宣言する感じです。

これで、変数「wdDoc」を使ってWordを操作することが可能になりました。

 

□Wordアプリを宣言

Dim wdApp As Word.Application

Set wdApp = New Word.Application

 

□Documentオブジェクトを宣言

Dim wdDoc As  Word.Document

Set WdDoc = wdApp.Documents



Word文書を操作する主なメソッド

Documents.Add     ・・・新規の文書を開く 

Documents.Open     ・・・既存の文書を開く 

(例)wdDoc.Documents.Open(path & "¥sample.docx")

 

InsertBefore     ・・・段落の先頭位置に文字列を記入 

InsertAfter     ・・・段落の終了位置に文字列を記入 

Save     ・・・上書き保存  

Close     ・・・ドキュメントを閉じる

 

(例)ドキュメントを保存する時、一緒に上書き保存をする

WdDoc.Close SaveChanges:= True 

※引数 SaveChanges:= は、上書き保存をするかどうかを決めます。

「SavesChanges:= False」は保存しない。

 

Quit     ・・・アプリケーションを終了する

 

よく使うコード

□文書の0~50文字目を取得

wdDoc.Range(Start:= 0, End:= 50).Text

 

□12段落のすべての文字列を取得

WdDoc.Paragraphs(12).Range.Text

※取得したい文字は段落(Paragraphs)の中の文字(Range)だから忘れずに、Range.Textをつける

 

□12段落の3~10文字目を取得する

wdDoc.Range(wdDoc.Paragraphs(12).Range.Start + 2, _

   wdDoc.Paragraphs(12).Range.Start + 10).Text 

※特定の段落のなかの文字を取り出したい場合は、ドキュメント全体から取り出す方法と書き方が異なるので注意する。

 

 □1段落目の先頭に文字列を挿入する

wdDoc.Paragrahs(1).Range.InsertBefore "おはよう"

 

□表内のセルに文字列を挿入する

wdDoc.Tables(1).Cell(Row:=1,Colum:=1).Range.InsertBefore "メモメモ"

※ドキュメント内に表が2つあり、2つ目の表が対象の場合は、Tables(2)とする。

表は「Cells」ではなく、「Cell」であるという点に注意する。

引数のRowは行。Columは列。

 

例のように、文字を取得する場合は「.Text」が必要ですが、Wordドキュメントに文字を入力する場合は、「.Text」は要りません。

 

□印刷プレビュー

wdDoc.ActiveDocuments.PrintPreview

 

□ドキュメントを印刷する

wdDoc.PrintOut

 

□PDFで出力する

wdDoc.ExportAsFixedFormat OutputFileName:= path & "¥sample.pdf", _

ExportFormat:=wdExportFormatPDF