VBAのSHELLを用いてEXEファイルを起動する方法

このQ&Aのポイント
  • エクセルのVBAのshellを用いて、exeファイルを起動させましたが、ファイルが正しく作成されませんでした。
  • 直接ダブルクリックしたときと同じように、C: estのディレクトリにテキストファイルを作成する方法がわかりません。
  • VBAのSHELLを使用してEXEファイルを実行する際にファイルの保存先が異なる問題が発生しています。解決方法を教えてください。
回答を見る
  • ベストアンサー

VBAのSHELLを用いてEXEファイルを起動したものの、微妙にうまくいかない

エクセルのVBAのshellを用いて、exeファイルを起動させてました。 exeファイルはCを用いたシンプルなもので、テキストファイルを作成します。(ソースは下記参照) C:\testのディレクトリにエクセルファイルを作成し、 Shell "C:\test\test.exe" を実行させたところ、ファイルはC:\testのディレクトリに出来ずに、マイドキュメントに出来ました。 このexeファイルを直接ダブルクリックしたときは、C:\testのディレクトリにテキストファイルが作成されます。 ダブルクリックしたときと同じように、C:\testのディレクトリにテキストファイルを作成する方法があれが教えてください。 よろしくおねがいします。 (ソース、hello.txtというファイルをつくり、hello!を書く) main( ) { FILE *fp; /* ファイルポインタ */ fp = fopen( "hello.txt", "w"); fprintf(fp,"hello!\n"); fclose(fp); return 0; }

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

Shell の行の直前に以下の1行を追加してみてください。 CHDIR "C:\TEST"

8tomato8
質問者

お礼

bin-chan様 回答本当にありがとうございます! うまくいきました! おかげさまで、この2週間ずっと悩んでいた問題に解放されました、本当にありがとうございます。 でも、このディレクトリの問題は、結構起こりそうな気がしますが、[vba exe shell]などのヘルプでは一度も見ませんでした。。。 本当にありがとうございます!

関連するQ&A

  • VBAでEXEファイルを動かす方法について

    エクセルのVBAをつかってC++で作ったexeファイルを起動させるプログラムを書きたいと思いますが、うまくいきません。 プログラムは下記です。 Sub Macro1() Shell ("C:\test.exe") End Sub エラーは出ないのですが、計算をしません。 ・VBEの参照設定のmicrosft scripting runtimeはクリックいれてます。 ・test.exe自体はクリックすると起動して計算します。 もし、対応策をご存知なら教えていただければ助かります。 よろしくお願いします。

  • VBAのShellの同期的実行

    ExcelVBAについての質問です。コマンドプロンプトで実行するプログラムをCで作成しました(これをXXX.exeとします)。このプログラムは計算が終了した後で、その結果のファイルを作成します(これをYYY.txtとします)。このプログラムを操作し、結果を表にして出力するために、ExcelVBAでshellを使って以下のようなプログラムを作成しました。   shell("XXX.exe")   call Output Outputでは、XXX.exeが作成したファイルYYY.txtからデータを読み込んでシートに結果を出力するのですが、うまくファイルを読み込みません。多分、shellにより実行したXXX.exeが終了する前にOutputが呼ばれているのだと思うのですが、もしそうだとしたらどのような解決方法があるのでしょうか。よろしくお願いします。 WinXp、Excel2000です

  • 【Mac/Xcode】カレントディレクトリのファイルの読み込みについて

    Xcode(C++)で、設定ファイル(test.txt)を読み込むプログラムを作成しています。 困っているのは、できあがった実行ファイル(test.app)と同じディレクトリにその設定ファイルを置いて、test.appをダブルクリックで実行しても、設定ファイルを読み込めないでいます。(VC++ではできたのですが) もちろん、明示的にtest.txtのパスを下記のソースで指定すれば読み込めます。実行する場所が毎回決まっていないので、カレントディレクトリ内のファイルが読み込めるようにしたいです。 ソースは以下のように書いてます。 Xcode側で何か設定とかがあるのでしょうか? どなたかご存知の方がいらっしゃいましたらご教授のほどよろしくお願いいたします。 ※test.appの場所は、"プロジェクト名/build/Debug/test.app" です。 -------------------------------------------- void main(){ FILE* fp; char s[256];  char *filename = "test.txt"; fp = fopen(filename, "r"); if( ! fp){ printf("ファイルオープン失敗"); // ここに入る return;  } while (fgets(s, 256, fp) != NULL) { // test.txt を読み込む処理 (中略) } (中略) }

  • shell diff の使い方について

    shellで差分をとりたいとおもっているのですが・・・ aaa.txtの中身 ※1 aaaaaa_xxx.c ※2 bbbbbb_yyy.c . . . bbb.txtの中身 ※1 aaaaaa.c ※2 bbbbbb.c . . . aaa.txt、bbb.txtそれぞれに200近くのファイル名のみが入っています。 両方のテキストファイルを読み込み、それぞれの※1と※1、※2と※2というふうに 差分を見ていきたいと思っています。行はすべてバラバラです。 差分を見たい対象になる基準は・・・ 例えば、※1であればaaaaaaの部分が同じなので。 (ディレクトリもそれぞれファイルごとにばらばらです) ついでに差分の行数も出力したいと考えています。 なにか良い方法を教えていただけませんでしょうか? shellでつくりたいと思っています。 どうかよろしくお願いいたします。

  • 拡張子が「.exe」でないファイルを実効ファイルとして実行するには?

    こんにちは。 いつもお世話になっております。 拡張子が「.exe」でないファイルを実効ファイルとして実行するにはどうしたらよいでしょうか? 例えばVBで作成した実行ファイル「test.exe」を名前の変更で「test.txt」などにした場合にそれを実行ファイルとして実行したいのです。 エクスプローラ上でダブルクリックした場合は当然テキストエディタが立ち上がってしまいます。 一応、コマンドプロンプト上で実行した場合は実効ファイルとして起動したのですが、 もう少し簡単に(ファイル名を指定して実行などで)できないのでしょうか? どうかご教示下さい。 環境:Windows 2000

  • Shellの使い方について

    VBを最近はじめたのですが、Shellがうまくいかず、困っています。 下記のような内容で、MS-DOS上で動作するプログラムをShellで呼び出していますが、ファイルが見つからないというエラーが出てしまいます。(<D:\kakasi\401.txt:No such file or directory) com1 = "kakasi.exe " + param + " <" + lbl_open_file + " > " + lbl_save_file retval = Shell(com1, vbNormalFocus) kakasi.exeには、パスが通してありますので、lbl_open_fileやlbl_save_fileのファイルが見つからないと思われます。 実行時のcom1の値は、kakasi.exe -Jk -Hk -Kk <D:\kakasi\401.txt > D:\kakasi\401.txt1 になっていて、DOSプロンプトから手入力、実行ではうまくいきます。 何が問題なのか分かる方、教えてください。 よろしくお願いします。

  • VBAで、テキストファイルの編集

    プログラムの初心者です。 困ってます。お教え下さい。 VBA上の制御で、あるテキストファイルのデータをコピーして、 別のテキストファイルに貼り付けして、別保存したいのですが、 分かりません。 テキストファイルを開くだけでしたらできたのですが、 それからが・・・・ Call Shell("C:\WINNT\system32\notepad.exe c:\text1.txt") すいません、お教え下さい。

  • VBのshellについて。

    すみません。教えてください。 環境OS:winXP ソフト:VB6.0 sp5 内容:shellを利用してbatファイルをキックさせようとしていますがうまくいかないのです。 --VBソース-- Str = "C:\program file\SOFT\test.bat" & "/w" nR = shell(Str,1) -- batファイルの中身-- @echo dir %1 > "C:\Program File\SOFT\log.txt" 以上のデータなのですが、EXEを作成し、Shellを起動するとエラーが帰ります。 確認したところ、windows2000では問題ないのですが、XPではProgram Fileのスペースが問題で、エラーになってしまうのです。 教えていただきたいのは、 1.本当にXPではスペースのあるディレクトリ名はエラーになるのかということ。 2.もしエラーになるのであれば、対応策。 の上記の2点を教えてくださいませ。 いろいろ試し、探しているのですが、なかなか見つからず困っています。 XPのみできないっていうのも半信半疑だし・・・・ お願いします。

  • アクセス VBA ファイル操作

    ノートパッドなどテキストエディタで開くことができる、拡張子がtxtではないファイルがあります。 そのファイルをテキストエディタで開いて、名前を変えて、テキストファイルとして保存したいのです が、どのようなコードになりますでしょうか? 下記で開くのですが、 Shell "NOTEPAD C:\test\sampl\abc.ini" その後、 SaveAs FileName:="C:\test\temp\xyz.txt", のように処理しようと思ったのですが、上手くいきません。 お手数ですがご教示ください。

  • shell関数について

    毎度、お世話になっています。 現在、C言語で書いた複数のプログラムをBATファイルで処理するように記述しています。VBでその制御を行っているのですが、VBの処理手順として子フォーム(textあり)にデータを書きこんで、ボタンを押すとshellでbatファイルを起動し、バッチファイルの結果として、あるディレクトリにresult.txtが作成され、VBで他の子フォームに読みとらせようとしているのですが、shellだと、実行の終了を待たずに次にいってしまうので、そのバッチファイルの実行処理が終わらず、result.txtの内容を読み込むことができません。 待つようにするにはどうすればよいのでしょうか? ちなみにVBは一週間前にはじめて、自分でも調べてなんとか作ろうとしたのですが、時間がないため、ここに質問させていただきました。なるべく簡単なアルゴリズムで、よろしくお願いします。 VBのプロセス    テキストにデータを書き込む      ↓     ボタン   →        テキストの内容を*.txtとして保存                        ↓                      バッチファイル起動    ↓(ここで右の実行を待たない     ↓     ので読み込むことができない)   C言語で書かれたプログラム実行                        ↓ result.txtを    ←        結果としてresult.txtが出来上がる 読み込んで表示     

専門家に質問してみよう