プロが教えるわが家の防犯対策術!

仕事で使うファイルの整理が苦手で、フォルダーを用途別にしたまでは
よいのですが、どこに置いたか忘れて結局ファイル名の検索などで
目的のファイルにたどりついたりしています。

「効率よく作業したい」これが第一なのですが
「私はこうしている」と同僚に自慢したい面もあり
下記のようなことが出来ないかと考えました。

 (1)Excel VBA でファイル一覧を作成する。
 (2)ファイル名を格納したセル(あるいは行)をクリックすると
  目的のファイルが開く。
 
 (1)は出来ました。
 (2)はOffice系だけでなくPDF・JPEG・CSV等がありつまづいています。
 
(1)もサンプルVBAを使ってどうにか作れた程度の初心者です。
 (2)はVBA初心者レベルで何とかなるものでしょうか。

OS:VISTA Office2007です。

A 回答 (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
 
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/07 02:40

>ファイル名を格納したセル(あるいは行)をクリックすると


>目的のファイルが開く。
 下記のコードの内、"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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/07 02:38

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