2016-07-22 3 views
1

私は、ExcleファイルでVBAを使用して、VBでコーディングするプログラムを起動する必要があるツールを作っています。そのプログラムを閉じると、VBAスクリプトにパラメータが返されます。vbaとvbの間でパラメータを渡す方法

私は今VBAスクリプトを使い始めましたが、VBプログラムのコードはまだ作成されていません。しかし、私は知っておく必要があります、何をVBAスクリプトで書いて、これは可能ですwheter。

だから、それはこのように動作するはずです:

  • 私はExcelファイルでだと私はプログラムの開発は、これはそれではない、またExcelファイルからパラメータを取得する(開始され
  • ボタンを押してください重要なまだ)私はいくつかのものにそれがその設定のIDをお返しすべきプログラムの開発
  • 閉会を形作るそのプログラムの開発に
  • 私は、このIDを使用してファイルバックExcelに取得しています

これは可能ですか?そして、パラメータを返すために、VBAスクリプトとProgrammで書き込む必要があるのは何ですか?

私はあなたは私が何を意味するか理解し、あなたはあなたが終了コードを返すために、あなたのVBの.exeファイルを設定することができ、私に

+0

あなたは –

+1

があなたのVB.Netのコードを書いて考えがあります[STDOUT](.aspxのhttps://msdn.microsoft.com/en-us/library/cbxxzwb5(V = vs.84))を読むことができますCOMオブジェクトライブラリとして?このようにして、VB.NetクラスのインスタンスをVBAコードで作成し、そのインスタンスの関数を呼び出して必要な値を返します。参照:[チュートリアル:Visual BasicでCOMオブジェクトを作成する](https://msdn.microsoft.com/en-us/library/x66s8zcd(v = vs.110).aspx) – TnTinMn

答えて

0

を助けることができると思います。 idが0(正常に実行されたことを意味します)または259(呼び出しプロセスはプロセスがまだ実行中であると考えます)を確認してください。以下のVBAは.exeを実行し、終了するのを待って終了コードを返します。

Option Explicit 

' Api declarations 
Private Declare Function GetExitCodeProcess Lib "Kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long 
Private Declare Function OpenProcess Lib "Kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long 
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long 


Public Function RunProgram(ByVal strFilename As String) As Long 

    '# PURPOSE: Run a program, wait until closed, and return the exit code 

    Dim TaskID As Long 
    Dim hProc As Long 
    Dim lExitCode As Long 

    Const ACCESS_TYPE = &H400 
    Const STILL_ACTIVE = &H103 

    ' Open the program 
    TaskID = Shell(strFilename, 1) 
    hProc = OpenProcess(ACCESS_TYPE, False, TaskID) 
    If Err <> 0 Then 
     Debug.Print "Cannot start " & strFilename, vbCritical, "Error" 
     Exit Function 
    End If 


    ' Wait until program is closed 
    Do 
     GetExitCodeProcess hProc, lExitCode 
     DoEvents 
    Loop While lExitCode = STILL_ACTIVE 

    ' Return the program's exit code 
    RunProgram = lExitCode 

End Function 
関連する問題