コモンダイアログ(ファイルを開く)でファイル名を指定します。
その後shell関数で他のファイルをキックしようとすると「ファイルが見つかりません」というエラーになります。
ちなみに、コモンダイアログでキャンセルを押すと、上記現象は起きません。
コモンダイアログでファイルを指定する前にはshell関数での起動はうまくいっています。
同じ現象に遭われた方は折られませんでしょうか?
また、解消方法はあるのでしょうか??
ファイルをキックする箇所の記述が合っていないため
パスをうまく参照できないのではないかなぁ〜と思います。
>その後shell関数で他のファイル
他のファイルというのは
コモンダイアログで選択したファイルと同じフォルダにあるのですか?
それとも、まったく別のフォルダ?
また、必ずエラーとなるのでしょうか?
コモンダイアログで選択するファイルを・・・。
単純なパスにあるフォルダ名
(Cドライブ直下など)にあるファイルを指定した場合
や、EXEと同じ場所にあるファイルを指定した場合
でもエラーとなるのでしょうか?
#SHELLでキックする部分のソースと、
#参照しようとしているフォルダ名は開示できませんか?
コモンダイアログで指定後,
カレントディレクトリ(CurrDir)を確認してみてください。
おそらく、直前に指定したファイルが存在するディレクトリになっています。
そのあとにShell関数で相対パスもしくはパス無指定でファイル名を指定するとどうなるか...もう結果はお判りですね(^^;
当方ではコモンダイアログ指定後、SetCurrentDirectory(API)で、
カレントディレクトリを元に戻すようコーディングしています。
>また、解消方法はあるのでしょうか??
Debug.Printなどで実際にどこのファイルを表示しようとしているか
確認すると、
「あ〜、こんなところ開こうとしている!」なんてことがわかって
さくっと解決することがありますが、
あと、DOSなどに詳しいひとは常識となってしまっているので、
まず、やらないのですが
Document and Settings や Program Filesなど
スペースがパス名に含まれていたりすると・・・。
Shell関数の引数と混同してしまうため
ダブルクオートで囲まないとパス名が正しく解析されなかったり・・・。
ぐらいかなぁ〜。
皆様のおっしゃるとおりでした。
shellの部分は、以下のように相対パスで記述していました。
----------------------------------------------------------
Dim RetVal
comstr = ".\CEntry.exe U," & strLogin & "," & strKey
RetVal = Shell(comstr, 1)
----------------------------------------------------------
絶対パスで記述したところ、解決いたしました。
本当にありがとうございました。m(__)m