• 締切済み

Excelのセルから読み込んだ値に応じて異なるアプリを起動する方法

Excelのセルから読み込んだ値に応じて異なるアプリを起動する方法を教えてください。 具体的にはワークシートのセルに書き込まれたアプリの名前(test1.exeまたはtest2.exe)を読み込んでそれに対応したアプリを実施したいと思っております。なお、それぞれのアプリのプログラムは同一フォルダーに保存されております。 現在以下の様なマクロを書いてトライしておりますが、これを実行すると 実行時エラー '53': ファイルが見つかりません。 というメッセージが出てしまいます。どなたか対策を教えてください。 Sub Macro1() Dim strKeywords As String strKeywords = "ThisWorkbook.Path" & Worksheets("wave_data").Range("G5").Value 'セルG5に起動すべきアプリの名前が記入されています。 MsgBox strKeywords 'アプリ名の読み込みが正しくできたか確認してます。 Shell strKeywords, vbNormalFocus 'この行を実行した直後に実行時エラー'53'がでます。 End Sub

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

おそらく、 strKeywords = ThisWorkbook.Path & "\" & Worksheets("wave_data").Range("G5").Value のように修正すればいいと思います。

kumagorou2004
質問者

お礼

ありがとうございます。うまく起動しました。

関連するQ&A

  • VBA Shell について(アプリの起動)

    Shellを使用して特定のアプリケーションの起動および操作をしたいと考えています。 起動は以下の式で出来たのですが、 Sub VbaToCmd() Call Shell("C:...........................................................................exe", vbNormalFocus) End Sub 起動後の画面でパスワード入力が求められます。 (1)パスワードを自動入力にしたい。 (2)起動後、キーボード操作を行いたい。 VBA初心者ですみません。。 ご回答よろしくお願いします。

  • VB6でWSH(vbs)を起動できる方法を教えてください。

    visual Basic 6でアプリケーションを開発していますが、 このアプリケーション(exe)から、test.vbsを起動したいと考えています。 ====vbのコード===== 'ボタンクリックしたら、test.vbsが実行される Private Sub Command1_Click() shell("test.vbs") End Sub ==== test.vbs ==== MsgBox("test.vbs起動しました。") です。 上記のようにコードを書きましたが、Shell関数で 「実行時エラー'5' プロシージャの呼び出し、または引数が不正です。」 のメッセージが出力されて、vbsが起動できません。 VB6でWSH(vbs)を起動できる方法を教えてください。 環境は以下の通りです。 OS:WIN2000 アプリ:VB6 ブラウザ:IE5.0

  • エクセルでセル中身をエディターで表示させるには?

    前回、 http://okwave.jp/qa/q7539058.html で質問した者ですが、再度質問しています。 エクセルで任意のセルを選択した状態で、VBAを使い、セルの中身をエディタで表示させたいです。 (エディタが無題で開きエクセルのセルの内容を表示させたい) エクセルのセルの中身は、改行が含まれている文章になります。 前回、同じような質問をしたのですが、以下の回答を頂きました。 sub macro2()  selection.copy  shell "Notepad.exe", vbnormalfocus  sendkeys "^v" end sub この場合、エディタで表示はされるのですが、改行がなくなり全て一行になって表示されてしまいます。 改行された状態で表示させることはできないでしょうか?

  • VBAでEXEファイルを動かす方法について

    エクセルのVBAをつかってC++で作ったexeファイルを起動させるプログラムを書きたいと思いますが、うまくいきません。 プログラムは下記です。 Sub Macro1() Shell ("C:\test.exe") End Sub エラーは出ないのですが、計算をしません。 ・VBEの参照設定のmicrosft scripting runtimeはクリックいれてます。 ・test.exe自体はクリックすると起動して計算します。 もし、対応策をご存知なら教えていただければ助かります。 よろしくお願いします。

  • マクロで他アプリを起動させる

    マクロで他アプリを起動させたいと思っているのですが 色々調べてみても解決できなかったので質問させていただきます。 ●他アプリを起動・・・ notepadなどのWindows標準ツールではなく、その他のアプリを起動したい と思っています。 以下のようにLhacaの「.exe」ファイルは開けました。 Dim rc As Long rc = Shell("C:\Program Files\Lhaca\Lhaca.exe", vbNormalFocus) If rc = 0 Then MsgBox "起動に失敗しました" 「.exe]がつかないアプリについてどういう指示を出せば起動できるのでしょうか? よろしくお願いします。

  • EXCELでセルの値が変化したときだけにマクロ実行

    教えてください。 EXCELのA1セルの値が1→0に変化したときにMacro1を実行、0→1に変化したときにMacro2を実行したいと思い、以下のマクロを「シート名タブ右クリック」→「コードの表示」で開く画面に打ちました。 そうしたところキーボードからA1セルに1や0を打ち込むとMacro1・Macro2を実行するのですが。A1セルに関数式を入れ自動で1→0・0→1に変化してもMacro1・Macro2が実行されません。この場合どう修正すればMacroが実行されるようになりますか? ※ちなみにA1セルの関数式はある条件を満たしたら1、そうでない時0という式です。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" And Target.Value = 0 Then Macro1 End If If Target.Address = "$A$1" And Target.Value = 1 Then Macro2 End If End Sub

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

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

  • VBAでフリーソフトを起動する事は可能でしょうか?

    Sub Sample1() Dim rc As Long rc = Shell("notepad.exe", vbNormalFocus) If rc = 0 Then MsgBox "起動に失敗しました" End Sub でメモ帳は開けるのですが、 QR Code Editorというソフトを入れていて、 それをVBAで開きたいのですがどうすればいいでしょうか? QR Code Editorは、 "C:\Program Files (x86)\Psytec\QR Code Editor\PsQREdit.exe" に入っています。 Sub Sample1() Dim rc As Long rc = Shell("PsQREdit.exe", vbNormalFocus) End Sub にすると、ファイルが見つかりません。 (Error 53)になってしまいます。 ご教授よろしくお願いします。

  • レジストリエディタを起動させて手前に表示させたい

    VBE画面から Sub test() Dim i As Long i = Shell("C:\WINDOWS\regedit.exe") End Sub を実行するとレジストリエディタを起動できるのですがアクティブ(前画面)になりません。 Sub test() Dim i As Long i = Shell("C:\WINDOWS\regedit.exe") AppActivate i End Sub これにしたも同じく全画面になりません。 ただ、一度起動した後に再度このコードを実行すると、 プロシージャの呼び出し、または引数が不正です。(Error 5) と言うエラーになりますが、1回目に開いたレジストリエディタがアクティブになります。 vbaコードで起動だけではなく、手前に表示させるにはどうすればいいですか?

  • エクセルVBAで外部ソフトFFFTPを操作(2)

    「FFFTPを立ち上げて、ホスト一覧からサイト名を選んで接続」 この作業をエクセルVBAで行いたいと前回質問した者です。 http://okwave.jp/qa/q7596470.html そこで、 Sub Sample1() Dim rc As Long rc = Shell("C:~\FFFTP.exe"-s サイト名", vbNormalFocus) If rc = 0 Then MsgBox "起動に失敗しました" End Sub この書き方で、成功したのですが、エクセルSheet1、A1のセルにサイト名があるとして、サイト名のところにA1セルを入れるにはどのように書けばいいのでしょうか? rc = Shell("C:~\FFFTP.exe"-s (ここにA1のセルを入れたい)", vbNormalFocus) VBAがほとんど分からず苦労してます。どなたか教えていただけないでしょうか?

専門家に質問してみよう