- ベストアンサー
ファイルへのハイパーリンクでフォルダを開けたい
excelで とあるファイルへのハイパーリンクがされているセルで、 そのファイルが保管されているフォルダを開けれるようにしたいのですが、何かいい方法はないでしょうか? よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
A列にハイパーリンクが埋め込まれていて そのアドレスがフルパスで記述されているとしたら 例 C:\Documents and Settings\nicotinism\My Documents\are.txt A列のセルのダブルクリックや右クリックでは諸々使いにくいと思い 隣のB列のセルをダブルクリックした時に現れるように考えました。 そのシートのイベントに Private Function GetLinkAdr(Rng As Range) As String Dim StrAdr As String Application.Volatile With Rng.Cells(1) If .HasFormula Then If InStr(.Formula, "=HYPERLINK") = 1 Then _ StrAdr = Split(.Formula, Chr(34))(1) Else If .Hyperlinks.Count > 0 Then _ StrAdr = .Hyperlinks(1).Address End If End With GetLinkAdr = StrAdr End Function Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim parentAddress As String Dim oFso As Object Dim f As Object Dim linkAddress As String If Target.Column <> 2 Then Exit Sub End If Set oFso = CreateObject("scripting.filesystemobject") linkAddress = GetLinkAdr(ActiveCell.Offset(0, -1)) If linkAddress = "" Then Exit Sub End If Set f = oFso.getfile(linkAddress) parentAddress = oFso.getParentFolderName(f) CreateObject("shell.application").shellExecute parentAddress Cancel = True Set f = Nothing: Set oFso = Nothing End Sub なお、リンクアドレスの取得は http://okwave.jp/qa/q3675397.html のご回答を丸々使わせていただきました。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
#3です。 >既設のファイルまでのハイパーリンクを編集せずに とはハイパーリンクの設定の操作をせずに、例えば関数を埋め込むなどのことか。 ファイルまでのハイパーリンクを設定してあるあるセルの状態で、ボタンでもクリックすると、ファイルでなく、1段上のレベルの フォルダを開きたいということか。関数や操作でな難しいと思うがVBAの経験などあるのかな。無ければ無理では。 普通にクリックしたらファイルが開くのでそれ以外の途を考えないといけない。 ボタンでも設けて Private Sub CommandButton1_Click() Dim fl As String f = Range("A1").Hyperlinks(1).Address fl = Left(f, InStrRev(f, "\")) MsgBox fl Shell "C:\Windows\Explorer.exe " & fl, vbNormalFocus End Sub Hyperlinks(1).の1も場合による。 もしこんな風なことなら、こんな手の込んだことは初心者は、やめるべきです。 ーーー それに質問ではしたいこと(意図)がはっきりしないし、御礼で補足後でもまだはっきりわからない。
お礼
回答ありがとうございました。 おっしゃる通り、初心者ですので、すぐには使いこなせそうにありません。 皆さん、すばらしい知識をどのように習得されたのか・・とため息が出るぐらいにうらやましいです。 今後理解を深めて生きたいと思います。
- mitarashi
- ベストアンサー率59% (574/965)
VBAなら容易だと思いますが、敢えて関数での実現にトライしてみました。 A1にハイパーリンクがあるとします。(ハイパーリンク関数によるハイパーリンクでは不可) ここでは、ハイパーリンクの表示文字列と、ファイルパスは同じとします。 A2に下記の関数を入力します。4階層目までのパスに対応しているつもりです。(パス中の\が1~4個まで対応) 要するにファイルのパスの最後の\の左側を切り出して、フォルダーのハイパーリンクを生成するのに苦労してみたという事です。 CHOOSE関数でこんな事ができると知ったのが収穫でしょうか。 xl2010で試しています。ご参考まで。 =HYPERLINK(CHOOSE(LEN(A1)-LEN(SUBSTITUTE(A1,"\","")),LEFT(A1,FIND("\",A1,1)),LEFT(A1,FIND("\",A1,FIND("\",A1,1)+1)),LEFT(A1,FIND("\",A1,FIND("\",A1,FIND("\",A1,1)+1)+1)),LEFT(A1,FIND("\",A1,FIND("\",A1,FIND("\",A1,FIND("\",A1,1)+1)+1)+1))))
お礼
ありがとうございました。 今は明確に理解できておりませんが、ぜひ使ってみて、理解させていただきます。
- imogasi
- ベストアンサー率27% (4737/17069)
挿入ーハイパーリンクーハイパーリンクの挿入の操作で、普通はファイル名までを指定します。さらに望みならそれ以下のレベルのシートなども指定できます。 逆に(ファイルの上のレベルの)フォルダのレベルで指定を止めておけば、質問のようになるのでは。 ただしクリックしてもファルダのレベルまでしか表示されず、ファイルはアイコン表示で、実際はその先の選択(ファイル指定)をしないと役に立たないでしょうがそれは覚悟の上で。
お礼
説明不足ですみません。 既設のファイルまでのハイパーリンクを編集せずに、そこからフォルダを開くという質問です。
- keithin
- ベストアンサー率66% (5278/7941)
ふつーに右クリックして「ハイパーリンク(の挿入)」から,目的のフォルダを選んでハイパーリンクを埋めてやればOKです。
お礼
説明不足ですみません。 既設のハイパーリンクを編集せずに、そこからフォルダを開くという質問です。
お礼
回答ありがとうございました。 VBAをとてもよく理解されているみたいで、大変うらやましいです。 正直、すぐには理解できそうもありませんが、いずれは なんとか理解して役立たせて頂きます。