- ベストアンサー
VBAで色々な種類のファイルを開く
仕事で使うファイルの整理が苦手で、フォルダーを用途別にしたまでは よいのですが、どこに置いたか忘れて結局ファイル名の検索などで 目的のファイルにたどりついたりしています。 「効率よく作業したい」これが第一なのですが 「私はこうしている」と同僚に自慢したい面もあり 下記のようなことが出来ないかと考えました。 (1)Excel VBA でファイル一覧を作成する。 (2)ファイル名を格納したセル(あるいは行)をクリックすると 目的のファイルが開く。 (1)は出来ました。 (2)はOffice系だけでなくPDF・JPEG・CSV等がありつまづいています。 (1)もサンプルVBAを使ってどうにか作れた程度の初心者です。 (2)はVBA初心者レベルで何とかなるものでしょうか。 OS:VISTA Office2007です。
- みんなの回答 (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
その他の回答 (1)
- DOUGLAS_
- ベストアンサー率74% (397/534)
>ファイル名を格納したセル(あるいは行)をクリックすると >目的のファイルが開く。 下記のコードの内、"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
お礼
ActiveWorkbook.FollowHyperlink 大変参考になりました。 ありがとうございました。
お礼
CreateObject("Shell.Application").ShellExecute Fname 色々な局面で利用できそうです。ありがとうございました。 また、ファイルなしの判定も載せていただき大変参考になりました。