excel VBA Dirにて検索したフォルダのパスを取得してハイパーリンクを貼る方法が知りたいです。
〇部分一致にて検索したフォルダのハイパーリンクを作成したいのですが、うまくいきません。
〇下記は以前こちらで助言頂いて作成した「部分一致にて検索したフォルダを開く」コードとその時の質問リンクです。
https://oshiete.goo.ne.jp/qa/12633599.html
Sub sample()
Dim xFld As String
Const xParent As String = "C:\Users\Desktop\test\"
xFld = Dir(xParent & "*" & Range("I11").Value & "*", vbDirectory)
Do Until xFld = ""
Shell "C:\Windows\Explorer.exe " & xParent & xFld, vbNormalFocus
xFld = Dir
Loop
End Sub
(↑デスクトップ「test」内にある{「I11」セルの文字列を名前に含むフォルダ}を開くもの)
〇上記で開くフォルダのハイパーリンクをシートに貼りたい場合どのようにしたら良いか助言頂けると有り難いです。
下記試してうまくいかなかったものの一つです。
Sub sample4()
Dim xFld As String
Const xParent As String = "C:\Usersi\Desktop\test\"
xFld = Dir(xParent & "*" & Range("I11").Value & "*", vbDirectory)
Do Until xFld = ""
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim fl As Folder
Set fl = fso.GetFolder(xFld)
Dim rng As Range
Set rng = Range("AD2").Offset(i, j)
ActiveSheet.Hyperlinks.Add Anchor:=rng, Address:=fl.Path
i = i + 1
xFld = Dir
Loop
End Sub
何卒宜しくお願い申し上げます。
No.4
- 回答日時:
No.1の者です。
下記の様な感じのコードを提示したつもりだったのですが。。。
jをどうするか不明なので、そのまま記載しています。
i=i+1の場所を修正しています。
Sub sample4()
Dim xFld As String
Dim i As Long, j As Long
Const xParent As String = "C:\Usersi\Desktop\test\"
xFld = Dir(xParent & "*" & Range("I11").Value & "*", vbDirectory)
With ActiveSheet.Hyperlinks
Do Until xFld = ""
i = i + 1
.Add Anchor:=Range("AD2").Offset(i, j), Address:=xFld
xFld = Dir
Loop
End With
End Sub
No.3
- 回答日時:
こんにちは
よくわからないところがありますけれど・・・
見つけたフォルダへのリンクを設定するだけなら、わざわざ FileSystemObject を持ち出してくる必要はありません。
すでにフォルダーのパスはわかっているのですから、文字列連結で
Address:=xParent & xFld
として設定すれば十分でしょう。
それ以前に、
>Const xParent As String = "C:\Usersi\Desktop\test\"
は、通常は存在しないパスだと思いますけれど(Usersiの部分)、特殊なフォルダ構成になっているのでしょうか?
また、
>Set rng = Range("AD2").Offset(i, j)
って、変数 i も j も初期値が設定されていないし、しかも j は何も変化していませんよね?
(VBAの場合は、一応、初期値は””または0に自動で評価はされますけれど・・)
なさりたいことは、「AD2のセルから下方に順にリンクを設定してゆきたい」ということでしょうか?
であるなら、とりあえず、
ActiveSheet.Hyperlinks.Add Anchor:=Range("AD2").Offset(i), Address:=xParent & xFld
などとしておけば、可能と思います。
No.1
- 回答日時:
こんにちは。
どの様に、うまくいかなかったのでしょうか?
Dimは、Subのすぐ下にまとめて書いた方が良いかと。
ループで2回目に同じ宣言を通るとエラーになるのでは?
xFld にパスが入っているので、それをリンクとして貼れば良いかと。
Do Until xFld = ""
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim fl As Folder
Set fl = fso.GetFolder(xFld)
Dim rng As Range
Set rng = Range("AD2").Offset(i, j)
ActiveSheet.Hyperlinks.Add Anchor:=rng, Address:=fl.Path
i = i + 1
xFld = Dir
Loop
↓
Dim i As Long, j As Long
With ActiveSheet.Hyperlinks
Do Until xFld = ""
.Add Anchor:=Range("AD2").Offset(i, j), Address:=xFld
i = i + 1
xFld = Dir
Loop
End With
変数、jが良く分かりませんが、例えば、上記の様にすれば良いかと。
(何となく、組み合わせで作っているので、詳細は調整して下さい)
動作確認もしていないので、場合によってはエラーになるかも。
下記を参考に、組み立てています。
https://www.moug.net/tech/exvba/0050064.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) Excel VBAについて、 フォルダ内のファイルを全て開きたい場合、 FSOを使えば、Dirは使わ 1 2023/01/27 13:18
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
excel VBA 部分一致の名前をパスに指定する方法
Excel(エクセル)
-
ExcelVBAでフォルダへのハイパーリンクを
Excel(エクセル)
-
excel VBA フォルダ内のサブフォルダを検索してハイパーリンクを貼りたい
Excel(エクセル)
-
-
4
別のシートから値を取得するとき
Visual Basic(VBA)
-
5
エクセルで「特定の文字を含むファイルへのリンク」or「特定の文字を含むファイルの検索の実行」
Excel(エクセル)
-
6
Excel VBAでリンク切れをチェックしたい。
Excel(エクセル)
-
7
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
8
フォルダ名をだすには
PowerPoint(パワーポイント)
-
9
エクセルVBAが途中で止まります
Visual Basic(VBA)
-
10
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
excel VBA 特定の文字列を含むフォルダを開く方法
Excel(エクセル)
-
13
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBA フォルダ名に特定の文字を...
-
ファイル名と同名のフォルダを...
-
C ファイル出力で、フォルダが...
-
フォルダ内のPDFファイル名を変...
-
エクセル VBA ファイルをフォ...
-
ExcelのVBAでフォルダ指定がで...
-
GetAttrが原因?
-
VBA 最新のフォルダ取得
-
VBAでフォルダ指定
-
Excelで指定したフォルダに保存...
-
VBプロジェクトでのフォルダ構...
-
Access VBA で フォルダ権限...
-
自動的に作られるresource.hに...
-
Excelのハイパーリンクについて...
-
エクセル マクロで指定フォル...
-
エクセル 一つ上の階層の別フ...
-
パス名に2バイト文字(マルチバ...
-
コモンダイアログで最後に開い...
-
Excelで、マクロ付きbookの自動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
ファイル名と同名のフォルダを...
-
VBA 最新のフォルダ取得
-
【マクロ】ファイル名の日付に...
-
windowsでテキストファイルの各...
-
デスクトップの画像をhtmlに表...
-
Access VBA で フォルダ権限...
-
フォルダ内のPDFファイル名を変...
-
パス名に2バイト文字(マルチバ...
-
多量のファイルをフォルダに自...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
ディレクトリ名変更してコピー...
-
VBA フォルダ名に特定の文字を...
-
エクセルマクロで指定フォルダ...
-
保存先のフォルダ名を指定した...
-
あるフォルダの中にあるファイ...
-
Excel VBA で フォルダ名の一部...
-
エクセルのマクロについて教え...
-
ExcelのVBAでフォルダ指定がで...
おすすめ情報
ご回答ありがとうございます。
頂いたもの動作しないようです。
エラー
■頂いた物動作せず
■質問文中コード「パスがみつかりません」
■他試作↓Do Until 下部
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim s As String
s = fso.GetBaseName(xFld)
Dim rng As Range
Set rng = Range("AD2").Offset(i, j)
ActiveSheet.Hyperlinks.Add Anchor:=rng, Address:=s
i = i + 1
リンク貼付されるが「指定されたファイルを開く事ができません」表示。
「ハイパーリンクの編集」でアドレスを確認すると「A%20」という表記(フォルダ名「A」)
j要らないですね。
回答ありがとうございます。うまく動作しました。
(Usersiの部分)はコピペした後の手直しでの消し忘れです。惑わせてすみません。
i,jに関しては何分初心者の為サイト等見つつ色々組み合わせたりで漏れや不要部あるようで、ご容赦下さい。
ついでに追加質問しても宜しいでしょうか。
上記だとリンクの文字がアドレスそのもの「C:\Usersi\Desktop\test\フォルダ名」となりますが、こちらをフォルダ名だけにするにはどうしたら良いでしょうか。
お手数お掛け致しますが、回答頂けましたら幸甚です。
何卒宜しくお願い致します。