- ベストアンサー
ファイルパスの汎用性について教えてください!
- 一覧表をつくりそこをダブルクリックするとハイパーリンクを設定するマクロを組んだのですが、ファイルパスに汎用性がなく困っています。
- コード中のpathの部分を可変にする方法を教えてください。
- 例えば、pathをこのコードが書かれているエクセルの特定のセルから取得することはできますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
別なブック、別なシートで使う場合に、 パスが違っても使えるようにというのは分かりますが、 その時、一覧表の範囲(M4:V4)は同じなんでしょうか? 範囲が違えばそれも汎用的でないと片手落ちになりますよね。 と、それは置いといて、パスだけA1の内容を使う場合。 '------------------------------------------ Path = Range("A1").Value '------------------------------------------- それから、ダブルクリックしたセルが (1)範囲(M4:V4)以外の時はジャンプ (2)範囲のときは、ダブルクリック通常処理(セル編集)のキャンセル の処理も必要でしょうね。 それには、For Each の前に次の2行を追加 '--------------------------------------------------- If Intersect(target, Range("M4:O4")) Is Nothing Then Exit Sub Cancel = True '--------------------------------------------------- 更にいえば、File Not Foundの処理も。。。 恐らく、 s = Dir(path & h & "*.*") これでやろうとしているのでしょうが。。 "*.*"の部分がちょと気になる。。(^^;;; 以上です。
その他の回答 (3)
- nicotinism
- ベストアンサー率70% (1019/1452)
何をしたいのか良く分からんが ?thisworkbook.path とか ?environ("userprofile") をイミディエイトウィンドウで実行してみてくださいまし。
- myRange
- ベストアンサー率71% (339/472)
回答2、myRangeです。 セル範囲にミスあり。。。 >If Intersect(target, Range(●"M4:O4"●)) Range("M4:V4") 以上です。
- imogasi
- ベストアンサー率27% (4737/17069)
>でpathの部分を可変にしたいんです の意味が良く説明されて無いと思うが。 独断でやると Option Explicit Sub test01() Dim h As Range Dim path As String Dim s As String Dim i As Integer i = 1 For Each h In Range("B1:B3") If h.Value = "" Then path = "C:\Documents and Settings\XXX\My Documents" 's = Dir(path & h & "*.*") ActiveSheet.Hyperlinks.Add Anchor:=h, Address:=path & "\" & Range("A" & i) i = i + 1 End If Next h End Sub ーー 内容からシートのイベントにする必要を感じないので、標準モジュールに入れて実行するようにした。 ハイパーリンクはB1:B3のセルに対し設定している。 セルのA1:A3にRange("B1:B3")に対応したブック名を入れた。 例A1:A3 01化X.xls 01化Y.xls 01化Z.xls ーー 私の場合は上記の名前のブックが "C:\Documents and Settings\XXX\My Documents" に存在する。 ーーー 実行するとB1 セルに C:\Documents and Settings\XXX\My Documents\01化X.xls がブルーの文字で入り、クリックすると01化X.xlsガ開く。 B2,B3も同様に01化Y.xls 、01化Z.xlsの分がセットされた。 これでは見当はずれですか。
補足
すみません。説明不足で・・・。プログラムを流用したいということです。このプログラムをコピーして作りは同じだがファイル名が違うデータに貼り付けて使いたいんです。そうするにはファイルパスが固定だとハイパーリンクの参照先が変わらないので、コピペしても自動で使えるようなプログラムにしたいんです!