- ベストアンサー
エクセルVBAでハイパーリンクを設定する方法
- エクセルVBAを使用してファイルをハイパーリンクで開く方法について教えてください。
- 指定したフォルダへのハイパーリンクを作成するために、エクセルVBAのコードを使用します。
- ハイパーリンクを作成したいフォルダのフルパスを取得し、そのパスをハイパーリンクとして設定します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
コモンダイアログにはComdlg32.ocxが必要でOfficeには入っていませんでした。 というわけで再度修正 Sub hyperlink3() Dim objXLS As New Excel.Application Dim File As Variant Dim fp As String '今度はEXCELのアプリケーションオブジェクトなので大丈夫だと思います File = objXLS.GetOpenFilename("全てのファイル,*.*", , "ファイルの指定") If Not (File = False) Then Range("IV1").Value = File 'End If <== ココにEnd Ifだとキャンセル時に処理がおかしいのでコメントアウト Application.ScreenUpdating = False Range("IV1").Copy Range("A65536").End(xlUp).Offset(1).PasteSpecial xlPasteValues fp = Range("A65536").End(xlUp).Value ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=fp, TextToDisplay:=fp Application.CutCopyMode = False Range("IV1").ClearContents Application.ScreenUpdating = True MsgBox "ハイパーリンクを設定しました。" 'キャンセル時の処理を追加 Else MsgBox "処理を中止しました。" End If End Sub という感じでどうでしょうか、今度は大丈夫だと思うのですが・・・大変失礼しました。
その他の回答 (2)
- Masa2072
- ベストアンサー率51% (94/182)
重ね重ね申し訳ありません。 ExcelのVBAなんだから Dim objXLS As New Excel.Application は不要で File = Application.GetOpenFileName(・・・・・・・ でOKです。
- Masa2072
- ベストアンサー率51% (94/182)
File用に少し変更 Sub hyperlink2() Dim File As Object Dim fp As String 'Shell.Application.BrowseForFolderの変わりにコモンダイアログを使用しました Set File = CreateObject("MSComDlg.CommonDialog") File.ShowOpen If Not IsNull(File.Filename) Then Range("IV1").Value = File.Filename End If Application.ScreenUpdating = False Range("IV1").Copy Range("A65536").End(xlUp).Offset(1).PasteSpecial xlPasteValues fp = Range("A65536").End(xlUp).Value ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=fp, TextToDisplay:=fp Application.CutCopyMode = False Range("IV1").ClearContents Application.ScreenUpdating = True MsgBox "ハイパーリンクを設定しました。" End Sub
お礼
Masa2072さんこんばんは。ありがとうございました。実行したところ 「実行時エラー ActiveXコンポーネントはオブジェクトを作成できません」となります・・・。特別な設定が必要でしょうか?
お礼
ありがとうございました!ばっちりでした。 すばらしいコードありがとうございました。とても自分では考えられないものでした。