• ベストアンサー

EXCELのVBAのコマンドボタンの動作について

EXCELのVBAでコマンドボタンを押したとき、あるテキストを、単にテキストとして開く為に、以下のコーディングをしました。 しかし、「shell」コマンドは実行形式でないといけないようで、うまく行きません。どなたか、判る方いらっしゃいますか? --------------------------------------------- wk_path = ThisWorkbook.Path & "\memo1.txt" wk_rc = Shell(wk_path, vbNormalFocus) --------------------------------------------- (エラーコード:メッセージ) 5:プロシジャーの呼び出し、または引数が不正です。

  • 9_chan
  • お礼率81% (170/208)

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

  • ベストアンサー
回答No.5

なるほど。 Chr(34) で囲まなければならない場合は wk_rc = Shell("CMD /C START " Chr(34) & Chr(34) & " " & Chr(34) & wk_path & Chr(34)) という感じでしょうか。

9_chan
質問者

お礼

うまく行きました wk_rc = Shell("CMD /C START " & Chr(34) & Chr(34) & " " & Chr(34) & wk_path & Chr(34)) ※但し、"CMD /C START " & Chr(34)・・・&を追加しました 有難うございました

その他の回答 (5)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.6

createobject("shell.application").shellexecute "C:\Documents and Settings\All Users\Documents\desktop.ini" とかでも

9_chan
質問者

補足

有難うございます、しかし、 notepadがでて来てしまいます

  • driverII
  • ベストアンサー率27% (248/913)
回答No.4

なるほど。 >>wk_rc = Shell("CMD /C START " & Chr(34) & wk_path & Chr(34)) chr(34) で囲ってしまうとダメですね。 Shell("CMD /C START " & wk_path) でないと。原因はコマンドプロンプトでSTART /? をやってみてください。 " で囲うとタイトルと見なされてしまうようです。

9_chan
質問者

補足

driverII様、度々ありがとうございます。 詳しくないので定かでないですけど、 C:\Documents and Settings\xxx  のようにパスにSPACEがあるためか、パスを指定するときは、Chr(34) ["] でくくらないと、だめだと思うのですけど・・・ START /?  やりましたけど・・・どうすれば、良いのでしょう?

回答No.3

お手軽な方法として、Windows XP/2000/NT の場合 ( Vista は未確認です。) wk_rc = Shell("CMD /C START " & wk_path ) という手もあります。 ( Windows 95/98/ME の場合は CMD の代わりに COMMAND になると思いますが未確認です。)

9_chan
質問者

補足

あれ? wk_rc = Shell("CMD /C START " & Chr(34) & wk_path & Chr(34)) コマンド画面が出てくるだけですけど・・・ 因みにxpです

  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

では、ちょっと高度になりますが、 Win32API の FindExecutable を使えば、出来なくはありません。 [Win32API の使い方] http://www.ne.jp/asahi/hishidama/home/tech/excel/dll.html また、レジストリを見るという方法もあるようです。

参考URL:
http://dobon.net/vb/dotnet/system/findassociatedexe.html
9_chan
質問者

お礼

なんか、難しそうですね あとで、トライしてみます 有難うございました。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

"notepad " & wk_path でいけませんか?

9_chan
質問者

お礼

あっ!行きました。 ありがとうございます。 でも、出来れば、”.txt" に対応した、アプリがだしたいなあ・・・

関連するQ&A

  • VBでQuickTimeムービーを実行させる方法

    VBからペイントを開くには Call Shell("C:\WINDOWS\system32\mspaint.exe", vbNormalFocus) でペイントが開きますが、VBからQuickTimeムービーファイルを開く方法を教えてください。 上記と同様にファイル名をAMOV01.MOVにして試みましたがだ 「プロシジャーの呼び出し、または引数が不正です」と表示されます。 プログラムは以下のように書きました。 Call Shell("ファイルのパス\AMOV01.MOV",vbNormalFocus) ファイルに関して、まったく知識がありませんのでよろしくお願いします。

  • 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)になってしまいます。 ご教授よろしくお願いします。

  • エクセルVBA シート上にあるコマンドボタンを削除するには?

    VBA初心者のためよろしくお願いします。 タイトル通り、シート上にあるコマンドボタンを削除したいです。 visible,enabledなどは使用せず、コントロールごと削除したいと考えています。 私は Worksheets("sheet1").CommandButton1.Delete だけで削除できると思っていたのですが、実行してみると  プロシージャの呼び出し、または引数が不正です というエラーが出てきてしまいます。 検索はしてみたのですが、中々発見できずに苦労しています。 わかる方がいましたら、よろしくお願いします。

  • VBA エクセル2003だと出るエラー

    VBAはじめたばかりですが、宜しくお願いいたします。 エクセル2000ではエラーがでませんが、2003の場合次のようなエラーがでます。 実行時エラー1004 アプリケーション定義またはオブジェクト定義エラーです 「デバック」を押して、コードをみますと、次の行に黄色いマーカーがつきます。 Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:=ThisWorkbook.Path & "\今月.txt" マウスオーバーすると、次の2つが表示されます。 xlCurrentPlatformText= -4158 ThisWorkbook.Path ="C:\Document&【現在このファイルがあるパス】" 解決方法はありますでしょうか。 ご存知の方、いらっしゃいましたら、なにとぞ宜しくお願いいたします。 このマクロの実行目的は、あるエクセルファイルを加工して、最終的にテキストファイルを生成することです。 テキストファイルをつくったあと、保存するタイミングでエラーがおきるようです。

  • エクセル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がほとんど分からず苦労してます。どなたか教えていただけないでしょうか?

  • EXCEL VBA で他のアプリケーションを開く方法について

    EXCEL VBAで他のアプリケーションを開く方法について教えていただきたいことがあります。 現在開いているエクセルのブックと同じフォルダにある、"AAA"という名称のsqc形式のファイル(EAST社のSkyLink Ver9.0のコマンドファイルです)をVBAで開く。 SHELL関数で開くと思っていたのですが、 Sub Test() Dim MyPath As String, MyTask As Double MyPath = ActiveWorkbook.Path & "\" MyTask = Shell(MyPath & "AAA.sqc") SendKeys "%FO", True End Sub とすると 「プロシージャの呼び出し、または引数が不正です」 というメッセージが出てしまいます。 如何せんSHELL関数を使うのが初めてでして、色々調べても どうしても解決策にたどり着きません。 どうぞよろしくお願いいたします。

  • excel VBA で、エクスプローラを開くとき

    excel VBA で、フォルダを指定してエクスプローラーを開くことができますが、そのとき検索文字も指定できるのでしょうか。 具体的には、以下のようにpath0でパスを指定して、エクスプローラーが開きます。 Shell "c:\windows\explorer.exe " + path0, vbNormalFocus このとき、検索文字列を指定したいのですが、可能でしょうか? エクスプローラの右上の虫眼鏡のウインドウに入れる文字を指定して、検索を自動実行させたいのですが。

  • エクセルVBAで…

    VBAからshell関数を使って、 FTPを起動して、 サーバーからテキストファイル(txt)を、 ローカルへ落としたいのですが… 落とすとEUCコードになってしまいます… FTPのオプションとかでshift-jisとかに直せるのでしょうか? よろしくお願いします(o*。_。)oペコッ

  • VBAでメモ帳にコピペをしたいのですが…

    おせわになります。 excelで、たとえば、A1~A3のセルをコピーして、メモ帳に貼り付けるというVBAを作りたいのですが、うまくいかないので、教えていただけないでしょうか。 Range("A1:A3").Select Selection.Copy a& = Shell("notepad.exe", vbNormalFocus) AppActivate ("無題 - メモ帳") …ここまでは書けてるんですが…が…

  • Word2010 コマンド ボタンを作りたい

    ワード文書の中に、クリックすればリンクしたmid ファイルが起動して、音楽が鳴るようにしたいのですが? 挿入->ハイパーリンクで、ファイル パスのテキストを入れて、クリックさすとできるのですが、 ファイル パスのむき出しは見えない様に、コマンド ボタンに埋め込む簡単な方法は無いでしょうか? VBAを使うとかは、難しすぎますので。 よろしくお願いします。

専門家に質問してみよう