- ベストアンサー
Excel VBAでハイパーリンクを設定する方法
- Excel VBAを使用して、「SAISYO」フォルダ内のすべてのファイルのパスをハイパーリンク形式で書き出す方法を教えてください。
- 質問者はExcel2000を使用しており、「SAISYO」フォルダ内には「TUGI」と「ファイル1」があります。「TUGI」フォルダ内には「SONOTUGI」と「ファイル2」があります。Sheet1にあるボタンをクリックすると、「SAISYO」フォルダ内のすべてのファイルのパスをA1,A2,A3...というセルにハイパーリンク形式で書き込みたいとのことです。
- 具体的なコードや手順がわからないため、フォルダの中のフォルダの中のファイルのパスを取得し、ハイパーリンク形式で書き込む方法を教えてほしいという質問です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ハイパーリンクの設定はマクロの記録で出来るかと思いますけど・・・ こんな感じで如何でしょ ListUp を実行して下さい Function GetSubDir(strTrgDir As String, Optional rRow As Integer) As Boolean Dim objFs As Object Dim objDir As Object Dim objFile As Object On Error GoTo errHnd Set objFs = CreateObject("Scripting.FileSystemObject") Set objDir = objFs.Getfolder(strTrgDir) Set objFile = objDir.Files For Each objFile In objDir.Files rRow = rRow + 1 'Debug.Print "rRow = " & rRow, "file = " & objFile.Path Worksheets("sheet1").Hyperlinks.Add _ Anchor:=Cells(rRow, 1), _ Address:=objFile.Path, _ TextToDisplay:=objFile.Path Next For Each objDir In objDir.subfolders Call GetSubDir(objDir.Path, rRow) '←サブフォルダを見に行きます Next Set objFs = Nothing Set objDir = Nothing GetSubDir = True Exit Function errHnd: Debug.Print Err.Number, Err.Description End Function Sub ListUp() MsgBox IIf(GetSubDir("c:\saisyo") = True, "成功", "失敗") End Sub
お礼
出来ました。 私などには書けないすばらしいコードに感激です。 nicotinismさんのような完璧なコードは書けるようにがんばります。 本当に助かりました。ありがとうございました。