ダウンロードしたファイルは、Eドライブに保存してください。
プログラムを修正すれば、どこでもよいが、二つとも同じ
フォルダーに保存してください。
掲載参考 EXCELとWord ダウンロード
1. e-to-w.xlsm
2. word-bunsyo.docx
 保存するときは[word文書.docx]に
 変更してください。


プログラムでは、各ファイルは、Eドライブになっています。


※このシステムのファイルを保存して、自分で修正を加えて実行することは望ましいが、
 Wordのブックマークなどの設定をしていない場合など、Wordとの間でエラーが発生した
 場合に、いくら待っても動かない場合があります。その時の解決方法は、キーボードの
 [ctrl]と[Alt]と[Delete]ボタンを同時に押すと、[タスクマネージャー]が開きます。
 その中に、Microsoft Word が表示されるので、選択して[タスクの終了]を押せば Excel に
 戻るので、マクロは停止できます。



Wordに転記されたグラフとデータ表の上下関係は、ブックマークの作成順序によって
変わります。



Wordを閉じるときに、上記が表示されます。当月として保存してもよいし、
保存しないと、ドキュメントに保存されます。



Set wdRange = wdDoc .bookmarks("Excel の表") .Range
 ' Wordで設定した、表挿入位置のブックマークの名前を使用します。
Set wdRange = wdDoc .bookmarks("Excel のグラフ") .Range
 ' Wordで設定した、表挿入位置のブックマークの名前を使用します。

M = Range("D4")    ' Mに当月が入ります。
wdDoc .saveAs Filename : = "word" & M & ".docx"
 ' 現在のWordの名前を[word 当月 .docx"]に変更します。

WdApp .Visible = True
 ' ここまでは、Wordでの処理が非表示で行われていた、ここで処理の結果の
 ' Wordが表示される。
ExitSub:
 Set wdRange = Nothing
 Set wdDoc = Nothing
 Set wdApp = Nothing

 Exit Sub
  ' これらの変数は、Wordを操作する為の変数なので、Exit Sub までの間に
  ' Nothing で解除しておかないといけない。
 ※マクロの動作途中に、エラーなどで停止した場合でも、変数が使用された
  ままなので、ファイルを開き直しても、読み取り専用になる。
  だから、途中で停止してしまった時には、プログラムの前部に GoTo ExitSub を
  書き込んで、そこから上記の ExitSub: にジャンプさせて変数を解除する必要がある。



Kill ThisWorkbook .Path & "\Chart .gif"
 ' これは、グラフをGif画像としてExcelと同じディレクトリに保存して、Wordに貼り付ける
 ' 処理をしているので、その画像を削除している。その部分は、自動で行われるので、
 ' 気にしないでこんなコードになるのかと思えばよいのでは。

VBA画面で[ツール]-[参照設定]をクリックすると[ライブラリ]のダイアログが開くので、
その中から [Microsoft word 12.0 以上の Object Library] を見つけて、その前の
チェックボックスに、[チェック]を付けて[OK]を押す。
ここでは、16.0 を選択しています。下方向へスクロールして探してください。



Set rnTable = .Range("ブラフの表")
 ' Excelのグラフデータ表範囲に付けた名前を使用します。
Set chObject = .ChartObject("Chart 1")
 ' Excelのグラフに付けた名前を使用します。
 ' Chart と 1 の間にはスペースがあります
[当月判定]プログラム


Co = Range("D7:P7"). End(xlToRight) .Column
 ' 7行目のD7からP7までの入力範囲の右端の列位置をCoに代入する。
If Co = 5 Then Mon = "6月"
 ' Co の値によって、月を決めて Mon に代入する。
Range("D4") .Value = Mon
 ' D4に月を記入する。

[Excel グラフを Wordに転記する]プログラム


' あらかじめ Microsoft word 12.0 Object Library を参照してください。
※このコード Const streport As String = "E:\word 文書 .docx" を使用するには
 [Microsoft word 12.0 以上の Object Library] を参照設定する必要があります。

●[実行]のマクロ解説
 
 
 マクロはメインマクロと、サブマクロに分かれていて、サブマクロは[当月判定]と言う名前に
 なっています。その役目は、売上高実績が入力された月を判定する為です。
 
 上記のグラフデータ表は、6月から5月までの、すべての月に売上高が入っています。
 しかし、使用する場合は5月から順に毎月その月の売上高が入ります。

 
 上の表は、12月のデータが入った状態です。D4セルに12月と表示されています。
 これはプログラムで、7行目の右端データセルの位置を検索して、それを基にD4セルに当月の月を
 書いています。それが[当月判定]です。
同じく、グラフ範囲を選択して、ダイアログを表示して、名前ボックスに[Chart1]と入力して登録します。
左上の名前表示部には[Chart1]と表示されるはずです。
又は、作成した時に[グラフ1]と名前が付けられているかもしれません。
VBAで呼び出すときには、テキストの [グラフ] と [ 1 ]の間にスペースが入っているので、スペースの
入力を忘れないように、注意が必要です。[Chart 1]の場合も同じように、スペースが自動で入っています。
●Excel ファイルの準備
 
 このファイルでは、C3:Q9 の範囲に[グラフの表]と言う名前が付いています。

 
 C3:Q9 を選択して、[数式]-[名前の定義]を押すと、名前ダイアログが開きます。
 Excel画面の左上の、名前表示部には C3 が入っています。

 

 ダイアログの名前ボックスに[グラフの表]と入力して[OK]を押すと登録されます。
 次からは、左上の名前表示部に[グラフの表]と、範囲を選択すると表示されます。

 
もう一度繰り返し[ブックマーク]を押すと[Excelの表]が登録されていることが分かる。
[Excelのグラフ]も入力して登録する。
Wordファイルを、名前を付けて保存します。ここではEドライブに[word文書.docx]と
して保存してあります。

※VBAの実行時に、ブックマークにそれぞれの名前が登録されていないと、エラーになる。
 又、転記済ファイルを毎月使うと、前月のグラフを削除する必要がある。
 削除するとブックマークが消えてしまうので、再度定義の必要が発生する。
 そこで、[word文書.docx]と言うファイルは開くファイル専用として、転記後には
 ファイル名を変更している。転記後のファイル名を当月にする事で、分類も容易になる。
[挿入]をクリックすると、[リンク]が表示されるので、その中の[ブックマーク]をクリックすると、
ダイアログが表示されるので、[ブックマーク名]に[Excelの表]と入力して[追加]を押す。

 上記がWordに転記された集計表とグラフである。画像として貼り付けられているので、他の人に
 修正されることはない。

●Wordファイルの準備
 Wordファイルには、画像として張り付けられるので、その貼り付ける位置を定義する必要がある。
 それは、リンクのブックマークに[Excelのグラフ]と[Excelの表]と言う名前を定義します。
 
 
上記は、Excelの集計表とグラフである。
[実行]ボタンを押せば、集計表とグラフが[Word文書.docx]と言うファイルに転記される。
転記されたWordファイルの名前は、その月の[Word5月.docx]になる。そのファイルに、その他説明などを
記入して、担当者に配布すれば良いのである。
尚、プログラムは、[実行]ボタンに登録されているので、ボタンを押せば処理は完了し、転記されたWord
ファイルが開きます。
●毎月の目標と実績の数値を対比して、その現状を把握し改善策を立てる事が必要である。
 集計担当者は、それをグラフにして集計表とともに、上司に毎月提出する必要に迫られる。
 集計表とグラフは、Excelで各データを自動で集計して、グラフで表示する事が望ましい。
 だが、提出する帳票は説明などの文書が必要になる場合もある。その場合は、Wordの文書が望まれる。
 そこでボタン一発、ExcelからWordへ転記してくれるプログラムを作成しましょう。


 
実践コース
ExcelグラフをWord文書に毎月自動で転記する


実際に使っているシステムの内容で解説
  EXCEL VBA 講座