• ベストアンサー

VBAで色々な種類のファイルを開く

仕事で使うファイルの整理が苦手で、フォルダーを用途別にしたまでは よいのですが、どこに置いたか忘れて結局ファイル名の検索などで 目的のファイルにたどりついたりしています。 「効率よく作業したい」これが第一なのですが 「私はこうしている」と同僚に自慢したい面もあり 下記のようなことが出来ないかと考えました。  (1)Excel VBA でファイル一覧を作成する。  (2)ファイル名を格納したセル(あるいは行)をクリックすると   目的のファイルが開く。    (1)は出来ました。  (2)はOffice系だけでなくPDF・JPEG・CSV等がありつまづいています。   (1)もサンプルVBAを使ってどうにか作れた程度の初心者です。  (2)はVBA初心者レベルで何とかなるものでしょうか。 OS:VISTA Office2007です。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 拡張子が正しく設定されているなら、こういうコードで開くはずです。 ダブルクリックして開きます。ハイパーリンクは必要ありません。ファイル名は、フル・ファイル名であっても、単に、ファイル名だけでも開くようにしてあります。ファイル名だけの時は、デフォルト・パスに入っていないと開かないようになっています。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   'Win 2000以上   Dim Fname As String   Cancel = True   'デフォルト・パス(ユーザー設定)   Const mPATH As String = "C:\MyFiles\" '*要設定   If Target.Value = "" Then Exit Sub   If Dir(mPATH, vbDirectory) = "" Then MsgBox "Default Path Err!": Exit Sub   If InStr(Target.Value, mPATH) > 0 Then     Fname = Target.Value   Else     Fname = mPATH & Target.Value   End If   If Dir(Fname) <> "" Then     CreateObject("Shell.Application").ShellExecute Fname   Else     MsgBox "ファイルが見当たりません。", vbInformation   End If End Sub  

noname#96255
質問者

お礼

CreateObject("Shell.Application").ShellExecute Fname 色々な局面で利用できそうです。ありがとうございました。 また、ファイルなしの判定も載せていただき大変参考になりました。

その他の回答 (1)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

>ファイル名を格納したセル(あるいは行)をクリックすると >目的のファイルが開く。  下記のコードの内、"D:\hoge\hoge.csv" の部分は、行内の文字列から取得してください。 ●その行のどこかに、「目的のファイル」へのハイパーリンクを貼る  ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="D:\hoge\hoge.CSV", _  TextToDisplay:="表示名" ●その行を右クリックで、「目的のファイル」を開く  Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)   Cancel = True   ActiveWorkbook.FollowHyperlink "D:\hoge\hoge.csv"  End Sub

noname#96255
質問者

お礼

ActiveWorkbook.FollowHyperlink 大変参考になりました。 ありがとうございました。

関連するQ&A