• ベストアンサー

プロジェクト間の値の渡し方

projectTEST 上のcommandボタンをclickした場合 private sub commandWork_Click()  Shell projectWORK.exe, vbNormalFocus end sub と内容にて別のプロジェクト(projectWORK)を実行しています projectTEST→projectWORK に meno as string の 値を渡したいのですが、可能でしょうか? また、どのようにすれば良いのでしょうか? よろしくお願いいたします

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>複数の変数の値を渡したい場合は、どのようにすればいいのでしょうか? >Shell "projectWORK.exe " & meno1 & meno2, vbNormalFocus あくまでも文字列としてわたるだけなので、それでもいいですけど、通常はmeno1とmeno2をそのままくっつけると境目がわからなくなるのでスペースを入れます。 Shell "projectWORK.exe " & meno1 & " " & meno2, vbNormalFocus

nao0
質問者

お礼

有難う御座います ご教示下さいました様にしております  そのあと、projectWORK側でどのように受け取れば良いのでしょうか? projectWORKで、変数(1)meno1,変数(2)meno2 として 個々の変数で値を受け取りたいのですが・・・・ よろしくお願いいたします

その他の回答 (4)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.5

> そのあと、projectWORK側でどのように受け取れば良いのでしょうか? > >projectWORKで、変数(1)meno1,変数(2)meno2 として >個々の変数で値を受け取りたいのですが・・・・ 区切り文字が、それぞれのパラメータ中で絶対に使用されないのであれば InStrで探すより、Splitを使用するほうが簡単です。 次の例は、区切りをスペース1文字とした場合です。 Public meno1 Public meno2 Sub Main Dim a As Variant a = Split(Command, " ") meno1 = a(0) meno2 = a(1) End Sub とかですかね。

  • saruru
  • ベストアンサー率37% (3/8)
回答No.4

例えば。 Private Sub Command1_Click() Dim meno1 As String Dim meno2 As String meno1 = "あ" meno2 = "い" Shell "projectWORK.exe " & meno1 & " " & meno2, vbNormalFocus End Sub とすると。 projectWORK側で、【MsgBox Command()】を実行すると、 あ い と表示されます(これは実際にやってみて理解して下さい) Shell "projectWORK.exe " & meno1 & meno2, vbNormalFocus で起動すると、 あい と表示されてしまう為、どこまでがmeno1の値でどこからがmeno2の値か分からなくなってしまう為、間に半角スペースを入れる訳です。 別に半角スペースでなくても、カンマでもコロンでも何でも構いません。 ご自分でmeno1とmeno2の間を区切る文字列を決めて、projectWORK側でその通りにコーディングすれば出来ます。 私はカンマをよく使いますが、 InStr関数でカンマを探し、1桁目からInStr関数の戻り値-1桁がmeno1の値、InStr関数の戻り値+1以降がmeno2の値となります。

  • saruru
  • ベストアンサー率37% (3/8)
回答No.2

こんにちは。 > (1)projectTEST プロジェクトには >  dim memo as string と宣言 呼び出し元となるプロジェクトでは、このように普通に変数の定義をすれば問題ないですね。 > (2)projectWORK.exe プロジェクトには >  ??? > どのように宣言すれば良いのでしょうか? 宣言は必要ありません。 #1の方が書かれている"Command()"はヘルプで調べてみましたか? Shellで、 Shell "projectWORK.exe " & meno, vbNormalFocus のようにprojectWORK.exeを起動した場合、"meno"はコマンドライン引数と言われる引数になります。 "Command()"とは渡されたコマンドライン引数を受け取る為の関数です。 よって、projectWORKの方では変数の宣言は必要ありません。

nao0
質問者

お礼

ありがとうございます  もう1つ教えてください 複数の変数の値を渡したい場合は、どのようにすればいいのでしょうか? Shell "projectWORK.exe " & meno1 & meno2, vbNormalFocus よろしくお願いいたします

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

まず、これでは動きません。 >private sub commandWork_Click() > Shell projectWORK.exe, vbNormalFocus >end sub 実行コマンド名は文字列です。 private sub commandWork_Click()  Shell "projectWORK.exe", vbNormalFocus end sub で、渡す値が変数の値でしたら、 private sub commandWork_Click()  Shell "projectWORK.exe " & meno, vbNormalFocus end sub となります。 projectWORK.exeのほうは、ソース中の任意の場所でCommand()を呼び出せば、引数を受け取ることができます。

nao0
質問者

お礼

ありがとうございます  (1)projectTEST プロジェクトには   dim memo as string と宣言  (2)projectWORK.exe プロジェクトには   ???  どのように宣言すれば良いのでしょうか? (1)(2)どのように宣言すれば良いのでしょうか? 教えてください

関連するQ&A