dポイントプレゼントキャンペーン実施中!

セルに入っているファイル名を開きたいと考えています。
ファイル名はパス付きで入っています。
拡張子が.docの時はワードで、.xlsの時はエクセルで、.pdfの時はアクロバットで、その他該当するアプリケーションを立ち上げてそのファイルを開き、そしてパス名だけの時はエクスプローラで該当ディレクトリを開きたいと思っています。
拡張子を見てワード、エクセル、アクロバットまでは立ち上げるVBAまでは出来ました。
エクスプローラが分かりません。
どなたか教えていただけないでしょうか。
またファイル名が入っている場合、現在は直接アプリケーションを起動するやり方をとっていますが、拡張子から自動的に適切なアプリを立ち上げることはできないでしょうか。
よろしくお願い申し上げます。

現在の方法:
Sub test()
Shell "C:\Program Files\Microsoft Office\OFFICE11\WinWord.exe " & _
"c:\test.doc", vbMaximizedFocus
End Sub

A 回答 (4件)

こんばんは。



CreateObject("WScript.Shell").Run パス

をお試しください。

パスがファイルの場合は、拡張子に関連付けられたプログラムで、
パスがフォルダの場合は、エクスプローラーでそれぞれ開きます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
これだけで全て実行できるとは素晴らしいですね。

お礼日時:2006/12/08 23:58

#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 を使うと良い
と思います。ニーズに合わせて使い分ると良いでしょうね。
    • good
    • 0

Excel なら


ハイパーリンクで記述しておけば
起動しますが。

挿入(I)→ハイパーリンク(I)
または
<Ctrl>+K
でフルパスでファイル名まで記述すれば登録されたアプリで、
フォルダ名までならエクスプローラが開きます。

Office 系アプリだと、新しいウィンドウがまったく同じサイズで
ぴったり重なって開いたりするので、
もとのウィンドウが閉じてしまったかと一瞬びっくりします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
確かにハイパーリンクにすればいいのですが、サーバーのディレクトリから大量にセルを作りますので、いちいちハイパーリンクを指定することはできないと思います。

お礼日時:2006/12/09 00:04

一応。

。。
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

補足日時:2006/12/08 21:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!