2017-07-12 13 views
0

VBAアプリケーション(MicroStation - CAD Draftiongツールを介して実行)からVB.NETプログラムに文字列を渡そうとしていますが、難しかったです。私はここに同様のことをするためのスレッドのカップルを発見したが、私の仕事をしたくないようです。VBAからVB.NETに情報を渡す

問題のVBA部分はこちらです。このコードは、別のStackoverflowスレッドから来て、私が似たような質問をしています。

Dim strProgramName As String 
    Dim strArgument As String 

    strProgramName = HPDIR & "Utilities\HP_CheckForUpdates.exe" 
    strArgument = "/ver=" & vVersion(0) 

    Call Shell("""" & strProgramName & """ """ & strArgument & """", vbNormalFocus) 

私の問題は、上記の議論を読むために私のVB.NETプログラムを得ることができますか? 別のスレッドでは "Environemnt.GetCommandLineArgs"が見つかりましたが、常に "System.String []"を返します。

私がしようとしているのは、VBAから文字列を取得してVB.NETで表示することです。私は、議論ではなく、それを行うための他の/よりよい方法を聞いてうれしく思います。ここで

+0

おそらく、この質問はhttps://stackoverflow.com/questions/82838/best-way-to-read-commandline-parameに役立ちます。 ters-in-console-application – muffi

+0

リンクをありがとう。残念ながら、VB.NETプログラムが読み込まれるときに "GetCommandLineArgs"が常に空であるため、私は役に立ちません。 – Rob

+0

上記のリンクのように 'Sub Main(ByVal args()As String)'を使用すると、あなたが言及したものは必要ありません。文字列配列args()にコマンドライン引数があります! – muffi

答えて

0

あなたは

のSenderモジュール他のVBプログラムに1つのVBプログラムからコマンドラインのparamsを送ることができる方法です。

Module Module_Sender 

    Sub Main() 

     Dim strCommand As String 
     strCommand = "CommandReciever.exe" + Space(1) + " ali" 

     Console.WriteLine("Sending shell command ... ") 

     Interaction.Shell(strCommand, AppWinStyle.NormalFocus) 

    End Sub 

End Module 

受信モジュール:

Module Module_Reciever 

    Sub Main() 
     Dim args() As String = System.Environment.GetCommandLineArgs() 

     If (args.Length > 0) Then 
      'display param And exit 
      Console.WriteLine("Program param = " + args(1)) 
      Console.WriteLine("press enter key to exit ...") 
      Console.Read() 
      Return 'System.Environment.Exit(1); 
     Else 
      Console.WriteLine("Hey, Program id param expected ...") 
     End If 


    End Sub 

End Module 
+0

センダとレシーバの両方のコンソールアプリケーションを同じフォルダに配置し、送信者を実行することでテストできます。受信者を呼び出し、送信者から受け取ったパラメータを表示します。 –

関連する問題