- ベストアンサー
セルのファイルを起動したい
セルに入っているファイル名を開きたいと考えています。 ファイル名はパス付きで入っています。 拡張子が.docの時はワードで、.xlsの時はエクセルで、.pdfの時はアクロバットで、その他該当するアプリケーションを立ち上げてそのファイルを開き、そしてパス名だけの時はエクスプローラで該当ディレクトリを開きたいと思っています。 拡張子を見てワード、エクセル、アクロバットまでは立ち上げるVBAまでは出来ました。 エクスプローラが分かりません。 どなたか教えていただけないでしょうか。 またファイル名が入っている場合、現在は直接アプリケーションを起動するやり方をとっていますが、拡張子から自動的に適切なアプリを立ち上げることはできないでしょうか。 よろしくお願い申し上げます。 現在の方法: Sub test() Shell "C:\Program Files\Microsoft Office\OFFICE11\WinWord.exe " & _ "c:\test.doc", vbMaximizedFocus End Sub
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 CreateObject("WScript.Shell").Run パス をお試しください。 パスがファイルの場合は、拡張子に関連付けられたプログラムで、 パスがフォルダの場合は、エクスプローラーでそれぞれ開きます。
その他の回答 (3)
- KenKen_SP
- ベストアンサー率62% (785/1258)
#2 です。補足します。 > 以下のVBAで該当ディレクトリのエクスプローラが立ち上がりました。 Explorer.exe は、通常環境変数でパスが通っているので、Exe までのフルパス を書く必要はありません。むしろ、フルパスで書くと Windows2000 と WindowsXP などのように、Windows フォルダのパスが異なる OS で動かないコードになって しまいますよ。 参考>> Explorer.exe のパス(うろ覚えだけど...) ・Windows9x/ME --> C:\Windows\Explorer.exe ・WindowsNT/2000 --> C:\WinNT\Explorer.exe ・WindowsXP --> C:\Windows\Explorer.exe サンプルコードです。 ' // Explorer を指定して開く場合 Sub Test1() Dim sPathName As String ' パスは途中空白があると失敗するので ”(Chr(34))で括る sPathName = Chr(34) & "C:\Windows" & Chr(34) ' Shell の場合は、パスを開くアプリを指定しなければならない Call Shell("Explorer.exe " & sPathName, vbNormalFocus) End Sub ' // WSH を使う場合 Sub Test2() Dim sPathName As String ' パスは途中空白があると失敗するので ”(Chr(34))で括る sPathName = Chr(34) & "C:\Windows" & Chr(34) ' WSH を使った場合は、自動的に関連付けられたアプリで開く CreateObject("WScript.Shell").Run sPathName End Sub 余談になりますが Excel のハイパーリンクが、最も手軽な方法ですね。 手軽な一方で、使用するアプリを選べないのが弱点に思います。 例えば、普段使っている WEBブラウザが InternetExplorer 以外であっても Excel のハイパーリンク機能は *.htm ファイルを InternetExplorer で 開いてしまいます。完全に関連付いたアプリで開けるわけではないようです。 ある種のファイルに限定された制約ではありますが。 どうしても自分がいつも使っているブラウザで開きたい、アプリを指定して 開きたい...といったニーズがある場合のみ、上記のような VBA を使うと良い と思います。ニーズに合わせて使い分ると良いでしょうね。
- saru_1234
- ベストアンサー率33% (452/1341)
Excel なら ハイパーリンクで記述しておけば 起動しますが。 挿入(I)→ハイパーリンク(I) または <Ctrl>+K でフルパスでファイル名まで記述すれば登録されたアプリで、 フォルダ名までならエクスプローラが開きます。 Office 系アプリだと、新しいウィンドウがまったく同じサイズで ぴったり重なって開いたりするので、 もとのウィンドウが閉じてしまったかと一瞬びっくりします。
お礼
回答ありがとうございます。 確かにハイパーリンクにすればいいのですが、サーバーのディレクトリから大量にセルを作りますので、いちいちハイパーリンクを指定することはできないと思います。
- michi_001
- ベストアンサー率32% (21/65)
一応。。。 C:\Windows\explorer.exe ですが・・・ これの場合、そこまでしなくても、 Windowsキーを押しながら「E」キーをクリックするだけでも出てきますが・・・?
補足
ええとですね。セルに"C:\temp"が入っている場合、"C:\temp"が開かれた状態でエクスプローラを立ち上げたいのですが。 ご回答の方法ではエクスプローラが立ち上がるだけですね。 でも「C:\Windows\explorer.exe」から何となくやり方が連想できました。 以下のVBAで該当ディレクトリのエクスプローラが立ち上がりました。 Sub test3() Shell "C:\Windows\explorer.exe " & _ Selection.Text, vbMaximizedFocus End Sub
お礼
回答ありがとうございます。 これだけで全て実行できるとは素晴らしいですね。