公開VBA/マクロ便利Tips:ExcelグラフをPasteSpecialメソッドでWordに貼り付ける業務効率化に役立つVBA/マクロのさまざまなTipsをコード例を交えて紹介していきます。今回は、Excelで作成したグラフを、Selection.PasteSpecialメソッドでWordに取り込んで表示させる方法と、ParagraphFormat.Alignmentプロパティを紹介。2013今回はExcelの「グラフ」というシートに作成された、表とグラフを、Wordに読み込み表示させる方法を解説する。使用するExcelのファイルは、これまでの連載で使用してきた、「K:\Excel_Word_VBA_Tips\Excel_Word連携VBA.xlsm」だ。フォルダは各自が保存しているフォルダと読み替えてほしい。「Excel_Word連携VBA.xlsm」をダブルクリックしてExcelを起動し、「グラフ」という新しいシートを作成する。そのシートの中に図1のような表とグラフと「表とグラフをWordに貼り付ける」ボタンを作成しておく。選択して、「角丸四角形」を配置し、これを選択して、マウスの右クリックで表示されるメニューから、「テキストの編集」を選択して、「表とグラフをWordに貼り付ける」と指定する。「中央揃え」を指定しておく。Editor)を起動する。プロジェクト内には既にModule1が追加されているので、この中にリスト1のコードを記述する。"クリップボードに何もありません。やりなおしてください。表とグラフをWordに貼り付けるコード以降、コードの中身を解説する。Object型の変数「myWord」「myWordDoc」を宣言する(2〜3行目)。CreateObject関数で「Word.Application」オブジェクトへの参照を作成し、変数myWordにセットする(4行目)。Document.Addで新しいWord文書を追加し、VisibleプロパティにTrueを指定して、表示する(6〜9行目)。Excelの「グラフ」シートの表を表示しているセル「A1:B6」をコピーする(11行目)。クリップボードにうまくコピーできなかった場合のためにエラー処理を行っておく。myError」で、エラーが発生した場合は、27行目のmyErrorラベル以降を実行する。myErrorラベル内では、警告メッセージを出して処理を抜けている(28〜29行目)。15行目では、「Selection.PasteExcelTable」メソッドで表を貼り付けている。書式については、Tips「Excelの表をWordに貼り付ける方法とWordのテキストをExcelのセルに埋め込む方法」を参照してほしいが、このTipsと異なり、今回は引数「LinkedToExcel」にFalseを指定している。Worksheets.ChartObjectsコレクション次に、17行目で、「グラフ」シートに作成された、グラフをコピーする。ChartObjectsは、ワークシートにある全てのChartObjectのコレクションだ。ChartObjectとはワークシートの埋め込みグラフを表す。今回は、「グラフ」シートに1個のグラフしか作成されていないので、ChartObjectsコレクションのインデックスに「1」を指定している。Selection.PasteSpecialメソッド次に、20行目のSelection.PasteSpecialで、クリップボードの内容を挿入する。Selection.PasteSpecialメソッドの書式は下記の通りだ。今回使用した名前付引数のみ解説しておく。これらはいずれも省略が可能だ。Placement:={表1の値},DataType:={表2の値}今回はPlacementには、wdInLineを使用している。列挙(Word)(機械翻訳)」DataTypeには、クリップボードの内容を文書に挿入する際の書式を指定する。今回は、「wdPasteMetafilePicture」を使用している。列挙(Word)(機械翻訳)」Selection.ParagraphFormat.Alignmentプロパティ次に、21行目で、表やグラフを左ぞろえに設定している。右ぞろえは「wdAlignParagraphRight」、中央ぞろえは「dAlignParagraphCenter」、左ぞろえは「wdAlignParagraphLeft」となる。実行結果リスト1を図1のボタンに関連付け実行すると、図2のように表示される。Excelの表とグラフがWord文書に貼り付けられた全て何が何でもVBAで片付ける必要はない今回は、これで終わりだ。今回はクリップボード経由で表やグラフをWordに貼り付けている。最後にクリップボードにコピーされたグラフは、ペーストできるものになら、何にでもペーストが可能だ。Excelで作成した表やグラフをWord文書の中で利用することは、実務において大変に多いのではないかと思う。そんな場合には、このサンプルのように、WordにExcelの表やグラフを一発で貼り付けられるのは大変に有益で便利ではないだろうか。貼り付けた後の、レイアウトなどはWordのメニューから行えばいいと思う。Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。