電子書籍の厳選無料作品が豊富!

excelで

とあるファイルへのハイパーリンクがされているセルで、 そのファイルが保管されているフォルダを開けれるようにしたいのですが、何かいい方法はないでしょうか?

よろしくお願いします。

A 回答 (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://oshiete.goo.ne.jp/qa/3675397.html
のご回答を丸々使わせていただきました。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
VBAをとてもよく理解されているみたいで、大変うらやましいです。
正直、すぐには理解できそうもありませんが、いずれは なんとか理解して役立たせて頂きます。

お礼日時:2011/04/25 22:41

#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も場合による。
もしこんな風なことなら、こんな手の込んだことは初心者は、やめるべきです。
ーーー
それに質問ではしたいこと(意図)がはっきりしないし、御礼で補足後でもまだはっきりわからない。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
おっしゃる通り、初心者ですので、すぐには使いこなせそうにありません。
皆さん、すばらしい知識をどのように習得されたのか・・とため息が出るぐらいにうらやましいです。
今後理解を深めて生きたいと思います。

お礼日時:2011/04/25 22:43

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

ありがとうございました。
今は明確に理解できておりませんが、ぜひ使ってみて、理解させていただきます。

お礼日時:2011/04/25 22:39

挿入ーハイパーリンクーハイパーリンクの挿入の操作で、普通はファイル名までを指定します。

さらに望みならそれ以下のレベルのシートなども指定できます。
逆に(ファイルの上のレベルの)フォルダのレベルで指定を止めておけば、質問のようになるのでは。
ただしクリックしてもファルダのレベルまでしか表示されず、ファイルはアイコン表示で、実際はその先の選択(ファイル指定)をしないと役に立たないでしょうがそれは覚悟の上で。
    • good
    • 0
この回答へのお礼

説明不足ですみません。
既設のファイルまでのハイパーリンクを編集せずに、そこからフォルダを開くという質問です。

お礼日時:2011/04/22 23:14

ふつーに右クリックして「ハイパーリンク(の挿入)」から,目的のフォルダを選んでハイパーリンクを埋めてやればOKです。

    • good
    • 0
この回答へのお礼

説明不足ですみません。
既設のハイパーリンクを編集せずに、そこからフォルダを開くという質問です。

お礼日時:2011/04/22 23:13

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