C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: VBA から VB.NET の実行ファイルから戻り値を得たい


(過去ログ 176 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■101324 / inTopicNo.1)  VBA から VB.NET の実行ファイルから戻り値を得たい
  
□投稿者/ ガンダーラ (4回)-(2023/02/05(Sun) 10:58:07)

分類:[.NET 全般] 

お世話になります

エクセルのVBAで簡単な計算をするプログラムを作成しています

エクセルファイル●●●●.xlsm 

のvbaから同じフォルダにある 

vb.netの実行ファイル ▲▲▲▲.exe を参照して

値を得たいと考えているのでしすが
このようなことは可能でしょうか


このようなことを説明されているホームページがあれば
紹介していただけませんでしょうか


よろしくお願いします


引用返信 編集キー/
■101325 / inTopicNo.2)  Re[1]: VBA から VB.NET の実行ファイルから戻り値を得たい
□投稿者/ Azulean (1264回)-(2023/02/05(Sun) 11:24:16)
No101324 (ガンダーラ さん) に返信
> のvbaから同じフォルダにある 
>
> vb.netの実行ファイル ▲▲▲▲.exe を参照して
>
> 値を得たいと考えているのでしすが
> このようなことは可能でしょうか

「値」というのはどういうものを考えていますか?


・単なる数値(Integer型)
その exe 側の終了コードとして示すことができるでしょう。

・それ以外
exe 側の大がかりな改造を実施してファイルなどを介してやりとりするか、exe を COM に改修して VBA で扱えるようにするかです。


いずれにせよ、考えているほど簡単ではない…と捉えられた方が良いかと思います。
引用返信 編集キー/
■101326 / inTopicNo.3)  Re[2]: VBA から VB.NET の実行ファイルから戻り値を得たい
□投稿者/ ガンダーラ (5回)-(2023/02/05(Sun) 19:22:08)
No101325 (Azulean さん) に返信

なるほど
簡単な話ではないのですね
それがわかっただけで大変助かりました

教えていただきありがとうございました
解決済とさせていただきます
解決済み
引用返信 編集キー/
■101327 / inTopicNo.4)  Re[3]: VBA から VB.NET の実行ファイルから戻り値を得たい
□投稿者/ radian (106回)-(2023/02/06(Mon) 08:53:36)
No101326 (ガンダーラ さん) に返信
> なるほど
> 簡単な話ではないのですね

exe側がなんのアプリかは分かりませんが、
もしコンソールアプリであればそこまでは難しくないと思います。

[DOSコマンドを実行し出力データを取得する]
https://dobon.net/vb/dotnet/process/standardoutput.html


解決済み
引用返信 編集キー/
■101329 / inTopicNo.5)  Re[4]: VBA から VB.NET の実行ファイルから戻り値を得たい
□投稿者/ 魔界の仮面弁士 (3558回)-(2023/02/06(Mon) 09:52:59)
No101327 (radian さん) に返信
> exe側がなんのアプリかは分かりませんが、
> もしコンソールアプリであればそこまでは難しくないと思います。
> [DOSコマンドを実行し出力データを取得する]
> https://dobon.net/vb/dotnet/process/standardoutput.html

そこで紹介された ProcessStartInfo クラスを使ったサンプルは、
「コンソールアプリを .NET アプリから呼び出す場合」の例ですね。

その逆に、「コンソール アプリを VBA アプリから呼び出す場合」においては、
WshScriptExec オブジェクトを使うことになるかと思います。
http://officetanaka.net/excel/vba/tips/tips27.htm


いずれにしても、vb.netの実行ファイル ▲▲▲▲.exe 側には、
自身の処理結果を、なんらかの形で相手に伝えるための仕組みが必要です。

・exe が Function Main(args() As String) As Integer の戻り値として結果を伝え、VBA からは WshShell の Run メソッドを通じて受け取る。
・exe がレジストリ(HKCU\Software\VB and VBA Program Settings)に結果を書き出し、VBA が GetAllSettings/GetSetting 関数で読み取る。
・exe が標準出力に結果を書き出し、VBA が WshScriptExec で読み取る。
・exe がファイルに結果を書き出し、VBA が Get # ステートメントや Get 関数、FileSystemObject などを使って読み取る。
・exe がクリップボードに結果を書き出し、VBA が DataObject オブジェクトの GetFromClipboard / GetText メソッドで取り出す。
・exe が DDE Client となり、DDE 通信を用いて、Excel 側(DDE Server) に結果文字列を送出(poke)する。
・exe が DDE Server となり、Excel 側が Application.DDERequest メソッドを呼び出して処理結果を読み取る。
・exe が オートメーションによって、起動済み Excel のワークシートに結果を送出する。
・exe 側を ActiveX DLL として作成してレジストリに登録して起き、Excel 側はそれを参照設定して呼び出す。


他にも Windows Message や匿名パイプなどなど、通信手段の選択肢は多数ありますが、
いずれにしても、呼び出す側/呼び出される側の双方の何らかの準備は必要です。
何を使うにしても、ある程度の前提知識が求められますね。
解決済み
引用返信 編集キー/
■101330 / inTopicNo.6)  Re[5]: VBA から VB.NET の実行ファイルから戻り値を得たい
□投稿者/ radian (107回)-(2023/02/06(Mon) 15:08:00)
2023/02/06(Mon) 15:08:11 編集(投稿者)

No101329 (魔界の仮面弁士 さん) に返信
> そこで紹介された ProcessStartInfo クラスを使ったサンプルは、
> 「コンソールアプリを .NET アプリから呼び出す場合」の例ですね。

ちょっと勘違いしてました、VBAから取得するという話でしたね…
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -