ファイルパスの汎用性について教えてください!
一覧表をつくりそこをダブルクリックするとハイパーリンクを設定するマクロを組んだのですが、ファイルパスに汎用性がなく困っています。以下のコードはどう直せばいいですか?
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
Dim h As Range
Dim path As String
Dim s As String
For Each h In Range("M4:V4")
If h.Value <> "" Then
path = "C:\Documents and Settings\marsh\デスクトップ\特殊\1111\02\01/チェックシート\"
s = Dir(path & h & "*.*")
ActiveSheet.Hyperlinks.Add Anchor:=h, address:=path & s
End If
Next h
End Sub
上記コードでpathの部分を可変にしたいんです。例えばpath = "C:\Documents and Settings\marsh\デスクトップ\特殊\・・・以降をこのコードが書いてあるエクセルのA1から拾ってくるとかしたいんです。できますでしょうか?よろしくご教授ください。
No.4
- 回答日時:
何をしたいのか良く分からんが
?thisworkbook.path
とか
?environ("userprofile")
をイミディエイトウィンドウで実行してみてくださいまし。
No.3
- 回答日時:
回答2、myRangeです。
セル範囲にミスあり。。。
>If Intersect(target, Range(●"M4:O4"●))
Range("M4:V4")
以上です。
No.2ベストアンサー
- 回答日時:
別なブック、別なシートで使う場合に、
パスが違っても使えるようにというのは分かりますが、
その時、一覧表の範囲(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 & "*.*")
これでやろうとしているのでしょうが。。
"*.*"の部分がちょと気になる。。(^^;;;
以上です。
No.1
- 回答日時:
>で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の分がセットされた。
これでは見当はずれですか。
この回答への補足
すみません。説明不足で・・・。プログラムを流用したいということです。このプログラムをコピーして作りは同じだがファイル名が違うデータに貼り付けて使いたいんです。そうするにはファイルパスが固定だとハイパーリンクの参照先が変わらないので、コピペしても自動で使えるようなプログラムにしたいんです!
補足日時:2010/10/29 15:34お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで丸をつけたいです。
-
エクセルVBA(実行時エラー438...
-
EXCELマクロ 保護されているシ...
-
エクセルテキストボックスの文...
-
Excelについて
-
データが入力されている隣のセ...
-
VBAについて教えてください。 E...
-
エクセルVBA セル選択後にカレ...
-
ダブルクリックすると現在の時...
-
Excel VBA セルを指定個数ラン...
-
Swing 編集不可でも選択可能なJ...
-
セル色を5秒間隔で変える
-
Windowsで動くVBAがmacOSで動か...
-
エクセル マクロ 見つけてセ...
-
VBAで、貼り付け禁止命令を実現...
-
エクセル2007 VBA DTPicker
-
シート内セルに着色があればエ...
-
Excel VBAで結合されたセルの数
-
エクセルのVBAでダブルクリック...
-
GrapeCityのSpreadの複数セルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データが入力されている隣のセ...
-
EXCELマクロ 保護されているシ...
-
エクセルテキストボックスの文...
-
VBAで、貼り付け禁止命令を実現...
-
Excelについて
-
メッセージを1度だけ表示したい。
-
ダブルクリックすると現在の時...
-
ハイパーリンクされているファ...
-
エクセルVBA セル選択後にカレ...
-
Jtableの特定のセルの背景色や...
-
VBAで丸をつけたいです。
-
エクセルVBA(実行時エラー438...
-
Excelのセル内にある図形を削除...
-
Swing 編集不可でも選択可能なJ...
-
(VBA)アクティブセルを起点に...
-
Excel VBA セルを指定個数ラン...
-
VBA セルに合わせて移動するが...
-
Windowsで動くVBAがmacOSで動か...
-
セル色を5秒間隔で変える
-
Excel VBA ダブルクリックで入...
おすすめ情報