エクセルのVBAで、Cの実行ファイルをDOSで動かし、戻り値を取得しセルに表示させたいのですが・・・

解決


VBA初心者  2006-09-30 03:42:16  No: 133479

今、エクセルのマクロ(VBA)でSHELL関数を使いCの実行ファイルを(いくつかの引き数と共に)実行させて、その結果を取得し、エクセルのセルに表示させようとしています。ですが、うまく実行、戻り値取得ができません。
過去ログも調べてみて、似ているものを探したのですが、ありません。どなたか詳しい方教えて下さいませんか?ちなみにVBAは全くの初心者です。よろしくお願いします。


あん  2006-09-30 04:31:09  No: 133480

SHELL関数では無理です。
他の方法をさがしましょう。

”初心者”ぶる人好きくないのでここまでです。。


VBA初心者  2006-09-30 08:41:12  No: 133481

SHELL関数を使う他でCの実行ファイルを動かして、戻り値を取得する方法はありますか?詳しい方よろしくお願いします。

>あんさん
何を根拠におっしゃてるかわかりませんが、VBAに関して全くの初心者です。“初心者ぶる”って勝手な想像でおっしゃらないで下さい。それに、初心者ぶる必要がどこにあるんですか?ここはそういう掲示板なんですか?


Blue  2006-09-30 21:14:43  No: 133482

>Cの実行ファイル
とはどんなものでしょうか?

コンソールアプリである場合、WScript.Shellオブジェクトが便利です。
参考
http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_03.html

ウィンドウアプリの場合、どのタイミングで処理が終了し、どの結果を取得する
のか判断するのが難しいので実現するのは現実的ではなさそう。


ヤマ@文系  2006-10-01 01:09:45  No: 133483

コンソールアプリと仮定した場合、
出力先を決めて、適当なファイルにリダイレクト。
処理を待つ。(終了を待つサンプルは過去ログにあると思います)
上のファイルからVBAで普通に開いて処理。
でどうでしょうか?


ヤマ@文系  2006-10-01 01:10:24  No: 133484

書き忘れ。shell関数などを使ったとき。


我龍院忠太  2006-10-01 06:42:56  No: 133485

受け取り側にTextBoxを一つ作って、Cの実行ファイル起動時に
引数でそのハンドルを渡し、Cのアプリからハンドルめがけて
テキストデーターを投げる方法もある。
クリップボード経由で渡す方法もあるし、手はいくらでも。
ただVBAからCに渡す方法はちょっと面倒なのでCの方も、
Windowを持った方法がいいかも。


もげ  2006-10-02 18:39:06  No: 133486

ExcelVBAなら、専門サイトが多いので、そちらのほうが適切でしょう。

あとは「Cの実行ファイル」とやらの仕様次第ですが、
コマンドプロンプト(DOSプロンプト)上での実行を想定しているのであれば、
http://www.officetanaka.net/excel/vba/tips/tips27.htm
でいけませんか?
まあ、あとはこのへん。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200412/04120036.txt
http://www.keep-on.com/excelyou/2003lng4/200307/03070426.txt
http://www2.moug.net/bbs/wordvba/20060917000001.htm
http://www.vector.co.jp/soft/dl/winnt/prog/se409273.html


VBA初心者  2006-10-23 17:20:34  No: 133487

遅くなりましたが、無事解決することができました。アドバイスを下さった皆様ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加