ここから本文です

VBA初心者です。 これからやりたいことをどなたか詳しい方、 おしえていただけま...

chi********さん

2019/7/1017:24:20

VBA初心者です。
これからやりたいことをどなたか詳しい方、
おしえていただけませんでしょうか?

まず、エクセルでB列に
06-0001
06-0002
06-0003



と番号があります。
ある指定のフォルダ内から上記番号と一致した番

号のエクセルを見つけてリンクを張りたいのです。
フォルダ内は06-0001_******と不要な文字が後ろについています。

教えてください。よろしくお願いいたします。

閲覧数:
29
回答数:
1

違反報告

ベストアンサーに選ばれた回答

sk_********さん

2019/7/1420:58:12

これでどうですか?
該当のシートがアクティブな状態で、マクロを実行してください。

Sub Sample()
Dim strDirPath As String, strTarget As String
Dim r As Range, objArea As Range
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show Then strDirPath = .SelectedItems(1) Else Exit Sub
End With
Set objArea = Range(Cells(1, "B"), Cells(Rows.Count, "B").End(xlUp))
strTarget = Dir(strDirPath & "\*.xls?")
Do Until strTarget = ""
For Each r In objArea
If 0 < InStr(1, strTarget, r.Value) Then
ActiveSheet.Hyperlinks.Add _
Anchor:=r, Address:=strDirPath & "\" & strTarget
Exit For
End If
Next
strTarget = Dir()
Loop
strTarget = Dir("")
End Sub

マクロ概要
マクロを実行すると、フォルダ選択ダイアログが開きます。
フォルダを選択すると、そのフォルダ内の、Excelファイル名を調べ、B列の番号が含まれていたら、そのファイルにハイパーリンクを設定します。

コードの説明
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show Then strDirPath = .SelectedItems(1) Else Exit Sub
End With
フォルダ選択ダイアログを開き、フォルダを選択すると、フォルダパスが変数strDirPathに格納される

Set objArea = Range(Cells(1, "B"), Cells(Rows.Count, "B").End(xlUp))
B列のデータ範囲セルをオブジェクト変数objAreaにセットする

strTarget = Dir(strDirPath & "\*.xls?")
先に選択したフォルダ内のExcelファイルを検索する。Excelファイルがあれば、そのファイル名が変数strTargetに格納される

Do Until strTarget = ""

Loop
ファイル名が空(ファイルが見つからない場合)なら、ループを抜ける

For Each r In objArea
If 0 < InStr(1, strTarget, r.Value) Then
ActiveSheet.Hyperlinks.Add _
Anchor:=r, Address:=strDirPath & "\" & strTarget
Exit For
End If
Next
ファイル名に、B列の文字列が含まれているか調べ、含まれていれば、ハイパーリンクを設定する

この回答は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる