![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.2ベストアンサー
- 回答日時:
OLE オートメーションで出来ると思います
言語が何なのかわからないので、
とりあえず vbスクリプトで説明します
他の言語の場合、その言語でOLEオートメーションを
調べてください
他の言語+ EXCEL.Application
で検索すればたいてい出てきます。
事前に C:\ にBook1.xls があるとして
その Book1.xls に Macro1() というマクロがあるとして
以下の手順
メモ帳を開き、下記プログラムをコピペ
ファイル名を、test.vbs として保存
test.vbs をダブルクリックすると
EXCELが立ち上がり、C:\Book1.xls をオープンして
Macro1 マクロをコールします。
Dim exApp
Set exApp = Wscript.CreateObject("Excel.Application")
exApp.Visible = True
exApp.Workbooks.Open ("C:\Book1.xls")
exApp.Run ("Macro1")
exApp.Quit
Set exApp = Nothing
この回答への補足
nak777rさん、ありがとうございます。
正に思っていた事が実現できました。
質問ついでと言っては何ですが、よろしければもう1点教えてください。
今回実行したいマクロは複数にわかれていて、その中に引数が必要なものがあります。
Sub Macro1
・・・
End Sub
Sub Macro2(a,b,c)
・・・
End Sub
といった感じです。
これをお教えいただいたvbスクリプトにて
exApp.Run ("Macro1")
exApp.Run ("Macro2")
と記述したところ、
エラー「引数省略はできません」と出てしまいます。
また、exApp.Run ("Macro2(a,b,c)")
と記述すると、
エラー「マクロ'Macro2(a,b,c)'が見つかりません」となってしまいます。
この部分が解決できれば全てうまくいきそうなのですが・・・。
引数指定の記述方法など解決手段がございましたら是非ご教授ください。
よろしくお願い致します。
No.4
- 回答日時:
>エラー「Sub プロシージャを呼び出すときに、かっこを使うことはできません。
」と出ます。すみません、自宅に環境が無いので、月曜まで確認できませんが
call exApp.Run ("Macro2",a,b,c)
又は、
exApp.Run "Macro2",a,b,c
と記述してみてください。
exApp.Run ("Macro2"), a, b, c
でうまくいきました。
これで万事解決です。
この度は大変お世話になりました。
本当に感謝しています。
ありがとうございました。
No.3
- 回答日時:
>引数指定の記述方法など解決手段がございましたら是非ご教授ください。
やり方は最後に記述しますが、
その前に、オブジェクトブラウザで確認する方法を覚えてください
EXCELメニュー
[ツール | マクロ | Visual Basic Editor] で EXCEL の Visual Basic Editor を起動
EXCEL の Visual Basic Editor のメニュー
[表示 | オブジェクトブラウザ]
全てのライブラリ
クラス名 の一覧に Application があるのでそれをクリックすると
右側の一覧が、'Application' のメンバの一覧になります
これが、
Set exApp = Wscript.CreateObject("Excel.Application")
で指定した exApp のクラスの内容になります。
たとえば、WorkBook に関して何かしたい場合は、
Application クラス の中に、 Workbooks オブジェクトがいるのがわかると思います
今度は、クラス側で、Workbooks クラスを選択すると、Open メソッド又は Addメソッド
が存在し、Add は、Workbook を追加、Openは、Bookファイルのオープンメソッドとして存在し、
それぞれのメソッドが、 Workbook を返すメソッドである事は
オブジェクトブラウザの下段にある Function Add([Template]) As Workbook という記載を
見ればわかります。
今度は、Workbook のクラスを選択すると、Workbookのメンバーの中に Worksheets のメソッド
がある事がわかる・・・と言う風に、クラスの階層わかると思います。
まず、このオブジェクトライブラリの使い方を覚えてください。
で、'Application' の メンバ の一覧の中に Run メソッドがあるので、
それをクリックして、F1キーで Run メソッドのヘルプが表示されます。
その、使用例を見るとわかると思いますが、
exApp.Run ("Macro2",a,b,c)
となります。
この回答への補足
詳細な説明ありがとうございます。
非常によくわかりました。
ただ、その通り定義しているにも拘らずコンパイルエラーになってしまいます。
エラー「Sub プロシージャを呼び出すときに、かっこを使うことはできません。」と出ます。
教えていただいたヘルプの内容を見ながら","の後の空白を調整してみたりしましたがダメでした。
何が悪いのでしょうか? 変数は使えないとかありますか?
No.1
- 回答日時:
バージョンがわからないのですが、昔のEXCELではファイルを開いた時にマクロを自動的に起動することができましたが、2000からは改編されてできないようになっています。
これは当時騒がれたマクロウィルス対策のためです。
現在はマクロを実行する時は「実行ボタン」あるいはマクロ実行呼び出し関数を組み込んでそれを実行することで実行することが必要になります。クローズするというのはエクセル自体をクローズさせることであれば、可能です。
マクロ自体をEXEファイルで実行する事は私も聞いたことがありません。もし、行うとしたら、VisualBasic等でプログラムを作成して、外部からEXCELを操作するといった方法になると思います。
特定のワークブックに組み込んで、そのプログラムを実行する呼び出す形は可能です。
不特定のワークシートに対して、一連の共通したファイル操作を行う事はオブジェクト関数によってシートの値の取得が可能です。
関数についてはVBAのリファレンスマニュアルを参考にしてください。
工夫次第ではかなり楽になりますので頑張ってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel起動時にエラーダイアログが表示される 3 2022/07/28 19:52
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/07/13 12:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコード件数の表示
-
String.containsの反対機能はあ...
-
Google Apps Script で getRang...
-
Java初級 引数に適用できません
-
C# 点の描き方をおしえてくだ...
-
なぜprotected overrideなのか
-
リストボックスの並べ替え (VB...
-
StringBufferからStringへキャ...
-
クラスを作るとメソッドの数が...
-
Fileの読み取り専用の解除
-
Jakarta POI での、excelのシ...
-
Javaのメモリの管理
-
【C#】WebBrowser上で表示され...
-
Javaとかで使うアノテーション
-
Javaの問題なんですが、練習14-...
-
別クラスのmainメソッドの実行
-
クラス図→ソース
-
テキストfileの入力、変換、出力
-
java.util.Calendar クラスの ...
-
IDLファイルとヘッダーファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコード件数の表示
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
public static void main (Stri...
-
abstract と static を一緒に付...
-
Google Apps Script で getRang...
-
StringBufferからStringへキャ...
-
メソッド宣言の戻り値の型にク...
-
javaに"search"という関数 or ...
-
C# 点の描き方をおしえてくだ...
-
Java初心者です、エラーの意味...
-
なぜprotected overrideなのか
-
親の親のメソッドを呼ぶには?
-
C# でメソッドに送られてきたOb...
-
Javaの関数名が長い?
-
別クラスのmainメソッドの実行
-
[クラス名].[メソッド名].[メソ...
-
コマンドライン引数のチェック
-
contextってなんですか?
-
説明文書でのメソッド・変数の...
おすすめ情報