VB6.0
エクセルVBで記述したshellコマンドでたとえば*****.exeを
起動したとき*****.exe内部で「実行時エラー13」が出ます。
最初から動いてないのであれば設定ミスなんですが実行途中で
このエラーが出ます。
本来で あればデバッガを使えばその原因は簡単に特定できますが
この場合*****.exeにデバッガをかけることができませんよね。
単体で*****.exeを動かすと正しく動きます。
Shellで起動したexeにデバッガをかけることはできないのでしょうか。
なんとなくですが、*****.exe のコマンドライン引数が影響している気がしませんか?
大抵のデバッガはコマンドライン引数を渡してデバッグを開始させることができますので、
その方向でやってみてはどうでしょう?
早速のレスありがとうございます。
コマンドライン引数ってのは具体的にどういうものでしょうか。
現在はエクセルVBAの
Shell "c:\aaaaa\bbbbb\ccccc\*****.exe"
という風に起動させています。
この場合*****.exe内部で実行時エラー13が出ています。
*****.exeでなく*****.vbpで起動してくれたら
楽なんですが。
あれー…私は、何か見当違いのことを書いていたようです(orz
> *****.exeでなく*****.vbpで起動してくれたら
VB6.exeの引数を調べてみてください。
何かそういうオプションがあるようです。
※これ以上は口を出せそうにないですね…
どこかで魔界の仮面弁士様が書いていらしたのですが、
http://www.microsoft.com/japan/msdn/columns/scripting/scripting04092001.asp
WSHをつかったらどうでしょうか?
そのexeってのは、貴殿がVB6.0で書いたもの という解釈でよろしいですか?
Excelの中から呼ぶのと手動で実行したときの差を、よく観察してみてください。
(たとえば、カレントディレクトリとか)
それから、
13は、「型が一致しません。」ですけれど、
VBのプログラム内で適切にエラートラップを行う
(エラー処理をちゃんと作りこむ)
のと、
行った処理をログに書き込む等で何処まで処理されたのか履歴を残しておく
のが解決への早道かと思いますよ。
ツイート | ![]() |