• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルからワードのマクロを実行したい)

エクセルからワードのマクロを実行する方法や注意点

このQ&Aのポイント
  • ワードで作られた報告書の表の数値をエクセルにコピーし、その数値を使ってエクセルのオートシェイプでグラフを描いて、またワードの所定の位置に図として貼り付けるマクロを作成しています。
  • エクセルのシートに配置したコマンドボタンをクリックすると、グラフの入ったセル範囲をコピーすることはできますが、その後にワードのマクロを指定して実行させる方法がわかりません。
  • Windows98SE, Excel97, Word97を使用しており、ワードのマクロは初挑戦で、サイトを探しても解決策が見つかりませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ふむ、よくわからないんですけど > エクセルからワードのマクロを指定して実行させることができますでしょうか? だけでしたら、 Dim wdApp As Word.Application Set wdApp = GetObject(, "word.application") wdApp.Run "wdtest" てな感じで、開いてる Word の wdtest というマクロが Excel側から実行できます。

takahiro_
質問者

お礼

ご回答ありがとうございます。 試してみましたら、上手くいきました! またわからないことがあれば、よろしくお願いいたします。

その他の回答 (1)

回答No.1

むしろ、Word から Excel操作すればよいのでは。 Word の VBE の[ツール]→[参照設定]で Microsoft Excel *.* Object Library に チェックを入れてください。 Sub test()   Dim xlApp As New Excel.Application      ActiveDocument.Tables(1).Rows(1).Select   Selection.Range.Copy   With xlApp     .Workbooks.Add     .ActiveWorkbook.ActiveSheet.Paste     .Charts.Add     With .ActiveChart       .SetSourceData Source:=xlApp.Worksheets(1).Range("A1").CurrentRegion       .Location Where:=xlLocationAsObject, Name:="Sheet1"     End With     .ActiveSheet.ChartObjects(1).Copy     Selection.EndKey Unit:=wdStory     Selection.Paste     .ActiveWorkbook.Close False     .Quit   End With   Set xlApp = Nothing End Sub

takahiro_
質問者

お礼

ご回答ありがとうございます。 教えていただきましたマクロは、実行すると自動的にグラフウィザードの中にあるグラフをワードに貼りつけるまでしてしまうものなのですね。 ややこしい書き方をして申しわけありませんでしたが、グラフは「エクセルのオートシェイプで描いた」グラフなのです…。オートシェイプの円と線とテキストボックスを一部グループ化したものになります。 私の考えている手順というのは、 1. ワードの表に入力されている数値の一部をコピーして、既に作成してあるエクセルブックの所定のセルに貼りつけし、 2. (これはエクセルでの作業になります) コントロールツールボックスのコマンドボタンをクリックすると、1.で貼りつけられた数値を使って、元々オートシェイプで作成されたグラフエリアの上に、オートシェイプの矢印とテキストボックスを使って線と項目を描き (ここで手動でテキストボックスに修正を加える場合があります)、 3. もう一つのコントロールツールボックスのコマンドボタンをクリックすると、オートシェイプを含んだセル範囲をコピーして、ワード文書に、所定の位置と大きさで、コピーされたセル範囲を図として貼りつける。 というものです。グラフの手動での修正がなければワードから全部操作するのがいいのですが、使用する単位の変更などがあるので、こういった面倒な手順が必要になってしまいます…。 ですので、エクセルからワードのマクロを指定して実行させることができますでしょうか? もしできないのであれば、ワード文書に「貼りつけ」ボタンを作成して、ユーザーにそれをクリックしてもらうという方法しかありませんでしょうか? どうぞよろしくお願いいたします。

関連するQ&A