ページを更新しました。
fastclassinfo.com
上記のページで、最新情報を記載しています。
このページの情報は古いので、ぜひ上記のページの情報をご覧ください。
・VBAでプログラミングを覚えたからには、ワード操作してみたい!
・エクセル情報をワードに差し込んで印刷をしたい!
・Wordのオフィスソフトとエクセルを連携させてみたい!
そんなことを考えているなら、この記事を読んでみてください。この記事では、
・ExcelVBAをワード連携マクロを書く
・Officeアプリケーションのオブジェクトモデルを作る
こんなとっておきの情報を紹介します。コードもあわせて紹介しますので、ぜひこのまま読みすすめていってください。
ページを更新しました。
fastclassinfo.com
上記のページで、最新情報を記載しています。
このページの情報は古いので、ぜひ上記のページの情報をご覧ください。
- エクセルVBAでのワード操作とは?メリットや違い
- エクセルVBAでwordを操作する前に考えるべきこと
- エクセルVBAでword連携する前にやっておくこと
- エクセルとワードを連携!文章作成のサンプルコードを解説
- 差し込み印刷したいなら|サンプルコードを紹介
- テンプレートファイルをダウンロードしたい方はコチラから
- 使えるテクニック
- エクセルとワード連携させるマクロを勉強するなら|本や動画講座
- エクセルとワード連携させるマクロを自力で書けるようになりたいなら
エクセルVBAでのワード操作とは?メリットや違い
エクセルVBAでワードを操作してみたいと考えているけれど、そもそも「ワード操作ってなに?」、「どんなことをするのか理解できていない。」というあなたへ、エクセルマクロでのワード操作についてカンタンに分かりやすく紹介します。
「エクセルマクロでのword操作」をカンタンに紹介
そもそも「エクセルマクロでのword操作」とは、エクセルマクロVBAを利用して、ワードを起動し、ワードの文章を記載したり、ワードの表を作ったりすることを指します。
エクセルからワードを操作するので、エクセルの表やエクセルの顧客情報や商品情報をワードに流し込みたい場合は、役立つ場合があります。
具体的なメリットやデメリットについては、後で記載していますので、このまま読み進めていってください。
ワード操作するメリット
エクセルマクロでワード操作するメリットは、多くの場合、差し込み印刷でしょう。
たとえば、「エクセルの情報をもとに、大量のワードファイルを顧客ごとに文言を変更して印刷」という仕事には重宝します。
もし、この仕事をマクロを使用せずに行うなら、手作業で一つずつ、コピペしてワードに貼り付ける必要があり、かなりしんどい作業です。しかし、エクセルマクロを利用すれば、ボタン一つで印刷するところまで自動で行えます。
ワード操作するデメリット
デメリットとしてもっとも大きいのは、ワードが必要な場面はほとんどないことです。
考えてみてほしいのですが、ワード作成できる資料は、エクセルでも代用可能ですよね。つまり、わざわざワードを操作するメリットはほとんどないのが実情です。
エクセルマクロを利用して、エクセルの中で作業を完結したほうがよっぽどラク。ワードに強いこだわりがない限り、エクセルマクロでワードを操作することはムダです。
むしろ、ワードと同じ資料をエクセルで作成しておいて、エクセルからエクセルのフォーマットに情報を流し込む方が賢いやりかたです。こうすれば、わざわざワード操作という上級テクニックを使用する必要がないので、ラクにプログラムを組めます。
「エクセルVBAでワード操作」と「ワードVBA」の違い
「エクセルVBAでワード操作」と「ワードVBA」の違いとは何?という質問をいただくことがあります。大きく違うところは、エクセルVBAで操作する点です。
つまり、エクセルVBAで操作するので、エクセルの情報をワードに流し込めます。具体的にいうと、以下の用途で強みを発揮します。
・テンプレートとなるワード文書の[氏名]などをエクセルに記載されている情報を差し込める
一方、ワードVBAでは、ワードの機能をマクロにできます。ですので、複数の操作を1つに集約できます。
たとえば、以下の3つの操作をするとします。
②「フォントサイズ12」
③「フォントの色を黒」
ワードを普通に使用すると、3つの操作を1つずつ行う必要がります。しかし、マクロを使えば、この3つの操作を1つの操作に集約することができます。
実際には、ワードVBAからエクセル操作することは可能ですが、使うメリットが全くありませんので、ここでは割愛します。
エクセルVBAでwordを操作する前に考えるべきこと
既に記載しましたが、大切なことなので、繰り返しお伝えします。
本当にワードは必要か?ということを考えましょう。
わざわざワードを操作するメリットはほとんどありません。せいぜいスキルアップできる程度です。どうしてもワードを使わないといけない場面にのみ活用してください。
エクセルマクロを利用して、エクセルの中で作業を完結したほうが「ラク」ということは頭に入れておくことをオススメします。
エクセルVBAでword連携する前にやっておくこと
エクセルVBAでword操作するためのプログラミングに入る前に、準備しておくことがあります。
準備|VBEで外部ライブラリへの参照設定でWord型を追加
参照設定とは、機能拡張させること、です。
Microsoft Word 15.0 Object Libraryにチェックを入れることで、Word操作の設定ができるようになります。バージョンによっては、15.0ではないときがあります。もし15.0ではなく、数字が小さい場合は、それにチェックを入れましょう。
1.VBEを開いて頂いて、「ツール」→「参照設定」
2.Microsoft Word 15.0 Object Libraryのライブラリにチェックを入れて、OKをクリック
詳細はこちらの画像の通りです。
1.VBEを開いて頂いて、「ツール」→「参照設定」
2.Microsoft Word 15.0 Object Libraryのライブラリにチェックを入れて、OKをクリック
ワードオブジェクトについて理解しておく
エクセルマクロから、ワード操作するときのハードルは、オブジェクト知識が必要なことです。もし、オブジェクトの知識が乏しい場合、コード編集に難しさを感じるでしょう。
VBAでエクセルを操作をするときと違って、ワード独自のオブジェクトが多数出てきます。これが、混乱する原因になりますので、調べながら、学習していくことをオススメします。
学習方法については、この記事の後半で記載していますので、合わせてよんでみてください。
エクセルとワードを連携!文章作成のサンプルコードを解説
エクセルVBAを利用して、ワード連携するマクロについて、サンプルコードを使いながら、詳しく説明していきます。ぜひコピーして活用してくださいね。
具体的には、以下のことをやっていきます。
コード2|wordを起動して、ファイルを開く
コード3|ワードファイルを読み込み、文章を編集する
コード4|ワードに文章を入力・出力する
コード5|文字を検索、置換する
コード6|エクセルからワードに表を貼り付け
コード7|wordファイルを印刷する
コード8|wordファイルを名前をつけて保存or上書き保存する
コード9|wordファイルを閉じる
このコードを使えば
マクロ処理前のワードファイルとエクセル
マクロ処理後のワードファイル
①Newfileとして新しくフォルダに保管
②表や文字が出力
このサンプルコードを使うときの注意点
注意してほしいのは、
・マクロが入ったエクセルと同じフォルダにsample.docを保存しておくこと
つまり、以下の画像のような状態にしておかないと、以下のマクロは作動しませんので注意してください。
文章作成のサンプルコード|コピペして使おう
以下のコードです。
Option Explicit Sub sample1() '''---コード1|変数を宣言 Dim path As String Dim wdapp As Word.Application Dim wddoc As Word.Document Dim wdrg As Word.Range Dim c As Long Dim waitTime As Variant '''---コード2|wordを起動して、ファイルを開く Set wdapp = CreateObject("Word.application") wdapp.Visible = True path = ThisWorkbook.path & "\sample.doc" '''---コード3|ワードファイルを読み込み、文章を編集する状態にする Set wddoc = wdapp.Documents.Open(path) '編集モードで開く 'Set wddoc = wdapp.Documents.Open(path, , True)' 閲覧モードで開く waitTime = Now + TimeValue("0:00:03") Application.Wait waitTime '''---コード4|ワードに文章を入力・出力する wddoc.Paragraphs(1).Range.Text = "入力したい文字" '''---コード5|文字を検索、置換する With wddoc.Content.Find .Text = "入力したい文字" .Forward = True .Replacement.Text = "置換文字列" .Wrap = wdFindContinue .MatchFuzzy = True .Execute Replace:=wdReplaceAll End With '''---コード6|エクセルからワードに表を貼り付け Range("A1:C4").Copy c = wddoc.Paragraphs(1).Range.End Set wdrg = wddoc.Range(Start:=c, End:=c) wdrg.Select wdrg.PasteExcelTable Linkedtoexcel:=False, wordformatting:=True, RTF:=True '''---コード7|wordファイルを印刷する wddoc.PrintOut '''---コード8|wordファイルを名前をつけて保存or上書き保存する</h3> wddoc.SaveAs Filename:=ThisWorkbook.path & "\Newfile.doc" 'wddoc.Save '上書き保存する場合 ''' ---コード9|wordファイルを閉じる</h3> wddoc.Close savechanges:=False wdapp.Quit Set wddoc = Nothing Set wdapp = Nothing End Sub
それでは、詳しく解説していきます。
コード1|変数を宣言
Dim path As String Dim wdapp As Word.Application Dim wddoc As Word.Document Dim wdrg As Word.Range Dim c As Long Dim waitTime As Variant
1行目:変数設定:テンプレートになるwordファイルのパス(URL)
2行目:Wordで使用するオブジェクト生成
3行目:Wordで使用するオブジェクト生成
4行目:変数設定:wordの文パーツを指定
5行目:変数設定:cをLong型で生成
6行目:変数設定:waitTimeをVariantを生成
コード2|wordを起動して、ファイルを開く
Set wdapp = CreateObject("Word.application") wdapp.Visible = True path = ThisWorkbook.path & "\sample.doc"
1行目:wdappに新しいWord.Applicationをセット
2行目:wdappを表示
3行目:pathにワードファイルのURLを設定
なお、ワードファイルのファイル名をsample.docとしています。
コード3|ワードファイルを読み込み、文章を編集する
Set wddoc = wdapp.Documents.Open(path) 'Set wddoc = wdapp.Documents.Open(path, , True)' 閲覧モードで開く waitTime = Now + TimeValue("0:00:03") Application.Wait waitTime
1行目:wddocにsample.docをセットして、編集モードで開く
2行目:wddocにsample.docをセットして、閲覧モードで開く
3行目:waitTimeに3秒後をセット
4行目:waitTime(3秒後)待つ
4行目は、ワードアプリを開くまでに十分待つことで、エラーが発生する要因を減らす工夫を入れています。
コード4|ワードに文章を入力・出力する
wddoc.Paragraphs(1).Range.Text = "入力したい文字"
1行目:wddoc(sample.doc)の1行目に、「入力したい文字」と入力する
コード5|文字を検索、置換する
With wddoc.Content.Find .Text = "入力したい文字" .Forward = True .Replacement.Text = "置換文字列" .Wrap = wdFindContinue .MatchFuzzy = True .Execute Replace:=wdReplaceAll End With
1行目:withを使って、記載を減らす(可読性アップ)
2行目~7行目:sample.docの中の"入力したい文字"を検索して"置換文字列"に置換する
8行目:with終わり
コード6|エクセルからワードに表を貼り付け
Range("A1:C4").Copy c = wddoc.Paragraphs(1).Range.End Set wdrg = wddoc.Range(Start:=c, End:=c) wdrg.Select wdrg.PasteExcelTable Linkedtoexcel:=False, wordformatting:=True, RTF:=True
1行目:エクセルのセルA1~C4をコピー
2行目:wddoc(sample.doc)の1行目を指定
3行目~5行目:1行目でコピーした部分をwddocの1行目にペースト
コード7|wordファイルを印刷する
wddoc.PrintOut
1行目:wddoc(sample.doc)を印刷
コード8|wordファイルを名前をつけて保存or上書き保存する
wddoc.SaveAs Filename:=ThisWorkbook.path & "\Newfile.doc" 'wddoc.Save '上書き保存する場合
1行目:wddoc(sample.doc)をNewfile.docという名前で保存(ファイルはsample.docと同じフォルダに保存される)
2行目:wddoc(sample.doc)を上書き保存
コード9|wordファイルを閉じる
wddoc.Close savechanges:=False wdapp.Quit Set wddoc = Nothing Set wdapp = Nothing
1行目:wddoc(sample.docn)を閉じる(変更を保存しない)
2行目:wdappを閉じる
3行目:wddocの設定を解除
4行目:wdappの設定を解除
差し込み印刷したいなら|サンプルコードを紹介
「エクセルVBAでワードを操作したい!」と強く感じるのは、多くの場合、差し込み印刷をする場合でしょう。
そこで、ここでは、差し込み印刷をする方法をサンプルコードを紹介します。
このサンプルコードを使えば、
マクロ処理前のワードファイルとエクセル
マクロ処理後のワードファイル
何が起きているのか?
A列 No
B列 [姓]
C列 [名]
D列 [住所]
E列 [電話番号]
F列 [メールアドレス]
の情報をワードの
[姓]
[名]
[住所]
[電話番号]
[メールアドレス]
と置換して、印刷し、保存する。
・エクセルの各行に対応したワードファイルが生成される
・ファイル名は、"No_[姓][名]"でそれぞれ保管される
ただし、このサンプルコードを活用するには、「エクセル表」と「ワードのテンプレート」を上手く連携させる必要がありますので、後述の注意点をよく読んでからご利用ください。
差し込み印刷のサンプルコード
差し込み印刷のサンプルコードはこちらです。
Sub sashikomi_macro() Dim cmax, cnt, i, k As Long Dim path, str As String Dim wdapp As Word.Application Dim wddoc As Word.Document Dim wdrg As Word.Range Dim c As Long Dim waitTime As Variant cmax = Range("A65536").End(xlUp).Row cnt = Range("IV1").End(xlToLeft).Column Set wdapp = CreateObject("Word.application") wdapp.Visible = True For i = 2 To cmax path = ThisWorkbook.path & "\sample.doc" Set wddoc = wdapp.Documents.Open(path) waitTime = Now + TimeValue("0:00:03") Application.Wait waitTime For k = 0 To cnt - 2 With wddoc.Content.Find .Text = Range("B1").Offset(0, k).Value .Forward = True .Replacement.Text = Range("B" & i).Offset(0, k).Value .Wrap = wdFindContinue .MatchFuzzy = True .Execute Replace:=wdReplaceAll End With Next wddoc.PrintOut str = Range("A" & i).Value & "_" & Range("B" & i).Value & Range("C" & i).Value wddoc.SaveAs Filename:=ThisWorkbook.path & "\" & str & ".doc" wddoc.Close savechanges:=False Set wddoc = Nothing Next wdapp.Quit Set wdapp = Nothing End Sub
準備すること|エクセルとワードのテンプレートファイル
ここで使用するサンプルコードを上手に活用するには、
・ワードのテンプレートファイル
を作成しておく必要があります。
エクセル表とワードは以下のようなものを準備します。
サンプルコードを利用するなら!3つの注意点
もし、この記事で紹介しているコードをそのまま使用するなら、以下の3つに注意してください。
・エクセルの1行目{[姓]、[名]・・・}とワードの置換文字{[姓]、[名]・・・}を一致させる
・印刷条件は、現行設定が反映される(事前に変えておくこと)
この3つをクリアしないと、ここで紹介するマクロは作動しません。場合によっては、エラーが出てしまいます。
中級者レベルの方であれば、コードを見れば、エラー対処もできますし、編集して上手に活用できるでしょう。しかし、初心者レベルの方であれば、エラーが出て、せっかくのマクロを活かしきれません。気を付けてくださいね。
もし、あなたが、エラー対処できるようになりたいなら、こちらの無料動画で学んでみてください。丁寧に解説されているので、初心者の方でも、ある程度は自力でマクロが書けるようになります。
テンプレートファイルをダウンロードしたい方はコチラから
この記事の中で紹介しているマクロのコードが入ったファイルを無料でダウンロードできるようにします。設定が面倒だなと感じる方は、以下のフォームにメールアドレスを入力いただくと、返信メールからエクセルファイルをダウンロードできます。
ぜひご活用ください。
使えるテクニック
上記で紹介した内容の他にも、使えるテクニックを紹介します。
ワードのページ数を調べる
Msgbox wddoc.BuiltinDocumentProperties(14)
ワードの文字数を調べる
Msgbox wddoc.BuiltinDocumentProperties(16)
エクセルとワード連携させるマクロを勉強するなら|本や動画講座
エクセルとワード連携させるマクロについて、もっと勉強したい方のために、オススメの教材を紹介します。
1.おすすめの本・書籍
もし、本や書籍で学びたいなら、以下の2冊がオススメです。
1.1エクセルマクロからワード操作するマクロを学ぶなら
オフィスの達人〈5〉VBA活用術―Excel/Word/Access/PowerPoint/Outlook Office 2003対応 (オフィスの達人 (5))
- 作者:佐野 昂成
- 発売日: 2005/04/01
- メディア: 単行本
この本を使えば、word操作を学習することができます。しかし、この本だと「分からない部分を質問できない」、「情報がアップデートされていない」ことがあります。また、office 2003で、情報が古い場合もあります。ですので、がっつり学びたい方には、物足りないでしょう。
1.2 ワードVBAを学ぶなら(エクセルマクロVBAからのワード操作ではありません)
作って簡単・超便利! Wordのマクロ実践サンプル集 [Word2010/2007/2003/2002対応] (Wordで作ったWordの本)
- 作者:西上原 裕明
- 発売日: 2010/07/07
- メディア: 単行本(ソフトカバー)
ワードvbaで仕事をラクにしたいと思うなら、この本がオススメです。ワードを操作をしながら、実践してみてください。ただし、エクセルマクロVBAからのワード操作ではありません。単純にワードvbaの情報です。
2.おすすめの動画講座
ワードとの連携を学ぶなら、エクセルからワードなどの外部アプリとの連携について、マスターすることをオススメします。ワード連携を本当の意味で理解できるようになります。
習得できれば、パワポ、アウトルック、ファイル・フォルダ操作まで応用できるようになります。
outlook、パワポ、ワード、ファイル操作、フォルダ操作は一見異なるように見えますが、原理原則は同じです。ですので、もし学ぶなら、原理原則の部分を学び、すべてに応用できるようになることをオススメします。
もしきちんと学ぶなら、このオンライン動画教材がオススメです。講師に質問できますので、分からないところがあっても安心ですし、今すぐ始めることができます。
エクセルとワード連携させるマクロを自力で書けるようになりたいなら
エクセルとワードを連携させるマクロを紹介しましたが、「あなたのやりたいこと」と「紹介しているコード」は100%一致することはないでしょう。せっかく良い情報を知っても、活用できなければ悲しいですよね。
あなたもご存じの通り、ウェブにもたくさんのマクロの情報が存在します。もし、これらを最大限に活用するには、あなたがマクロを自力で編集できるようになることです。
自力で編集できるレベルになれば、ウェブの情報を見て、自分に必要な部分だけを拾えるようになります。そうすれば、分からない所が合っても少し調べれば、解決します。
もし、自力で編集できるようになりたいなら、まずはこちらの無料動画講座で学ぶことをオススメします。無料の上、今スグに学習をスタートできます。ウェブの資産を活かすためにも、ぜひ自力で編集できるようレベルを目指しましょう。
次ページ 無職・派遣の男がたった1年で、仕事で年収100万アップし、海外プロジェクトリーダーに抜擢された「たった1つ」の方法とは?