標記のメモです。
例えば「エクセルのセルの内容を、引数としてexeファイルに渡したい時」などに使えると思います。
VBAだけでは出来ないような処理は、exeファイルにやらせましょう。
VBAでの引数の渡し方
VBAから引数付きで起動する際のサンプルコードです。
Sub Sample() Shell "C:\Windows\Notepad.exe 引数1 引数2", 1 End Sub
「shell」関数の第一引数に、「”パス 引数1 引数2 ・・・引数n”」という感じでexeファイルに引数を渡します。(パスの後ろを半角スペースを入れて引数を入れていく)
「shell」関数の第二引数は省略可能です。
exe側の引数の取り出し方
↑のVBAのコードで引数を渡す為のexeファイルを作る方法。
C#
C#で引数を取り出す際のサンプルコードです。
string[] arguments; arguments= System.Environment.GetCommandLineArgs(); //コマンドライン引数の表示 foreach (string argument in arguments) { MessageBox.Show(argument); }
例として、exeファイルを「”プログラムのパス 引数1 引数2“,1」で呼び出すと、「プログラムのパス」「引数1」「引数2」と書かれたメッセージボックス3回表示されます。
C
Cの場合は、main関数の引数に指定するだけです。(↓こんな感じ)
#include int main(int argc,char *argv[]) { int i; printf("引数の総個数 = %d\n", argc); for (i = 0; i < argc; i++) { printf("%d番目の引数 = %s\n", i, argv[i]); } return 0; }
このコードで作ったexeファイルの名前を「test.exe」として、VBAから「Shell “c:\test.exe “会社” 辞めたい”, 1」とすると実行結果は以下の様なDOS窓が表示されます。
引数の総個数 = 4 0番目の引数 = c:\test.exe 1番目の引数 = 会社 2番目の引数 = 辞めたい
おわり
コメント