No.1
- 回答日時:
バージョンがわからないのですが、昔のEXCELではファイルを開いた時にマクロを自動的に起動することができましたが、2000からは改編されてできないようになっています。
これは当時騒がれたマクロウィルス対策のためです。
現在はマクロを実行する時は「実行ボタン」あるいはマクロ実行呼び出し関数を組み込んでそれを実行することで実行することが必要になります。クローズするというのはエクセル自体をクローズさせることであれば、可能です。
マクロ自体をEXEファイルで実行する事は私も聞いたことがありません。もし、行うとしたら、VisualBasic等でプログラムを作成して、外部からEXCELを操作するといった方法になると思います。
特定のワークブックに組み込んで、そのプログラムを実行する呼び出す形は可能です。
不特定のワークシートに対して、一連の共通したファイル操作を行う事はオブジェクト関数によってシートの値の取得が可能です。
関数についてはVBAのリファレンスマニュアルを参考にしてください。
工夫次第ではかなり楽になりますので頑張ってください。
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.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 プロシージャを呼び出すときに、かっこを使うことはできません。」と出ます。
教えていただいたヘルプの内容を見ながら","の後の空白を調整してみたりしましたがダメでした。
何が悪いのでしょうか? 変数は使えないとかありますか?
お探しの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ランキング
-
Java初級 引数に適用できません
-
public static void main (Stri...
-
レコード件数の表示
-
StringBufferからStringへキャ...
-
VBAで新規ファイル名
-
abstract と static を一緒に付...
-
C# でメソッドに送られてきたOb...
-
不要なstaticメソッドの見分け...
-
Java初心者です、エラーの意味...
-
Google Apps Script で getRang...
-
String.containsの反対機能はあ...
-
親の親のメソッドを呼ぶには?
-
リストボックスの並べ替え (VB...
-
djUnit コンストラクタがpriva...
-
なぜprotected overrideなのか
-
戻り値の異なるメソッドの多重...
-
return new使用時
-
JComponentを継承して処理をJBu...
-
【C#】WebBrowser上で表示され...
-
Javaの初期化メソッドについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
public static void main (Stri...
-
レコード件数の表示
-
abstract と static を一緒に付...
-
なぜprotected overrideなのか
-
C# 点の描き方をおしえてくだ...
-
コマンドライン引数のチェック
-
String.containsの反対機能はあ...
-
Google Apps Script で getRang...
-
StringBufferからStringへキャ...
-
Java初心者です、エラーの意味...
-
javaに"search"という関数 or ...
-
C# でメソッドに送られてきたOb...
-
YYYYMMDD書式の日付に対する適...
-
メソッド宣言の戻り値の型にク...
-
return new使用時
-
readLine()ではじめから読み直...
-
シェルスクリプトからのJavaメ...
-
Fileの読み取り専用の解除
-
親の親のメソッドを呼ぶには?
おすすめ情報