質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

2回答

752閲覧

Excel VBA ハイパーリンクの設定方法

yuutarouw

総合スコア1

0グッド

0クリップ

投稿2022/11/08 01:01

エクセルVBAにて、書類作成を自動化しようと作成しています。
別ブックへ書類作成時に書類ナンバーへハイパーリンクを施したい
のですが、うまく紐付けができません。

実現したいこと

イメージ説明

①~③の流れを自動化したいのですが、③の部分で躓いています。
②のシート・ブック名称が転機された内容により変わり
ファイル名が一定では無いので、設定できない状態です。

ソースコード

別シートフォーマットへ転機後の流れ

'新規ブック作成
Dim wd As Workbook
Set wd = Workbooks.Add
Debug.Print (wd.Name)

'新規ワークブック Workbookへシートを移動
Workbooks("10B工事書作成").Worksheets("工事書元データ (2)").Move Before:=Workbooks(wd.Name).Worksheets("sheet1")

'工事書元データ (2)を工事名に変える
Workbooks(wd.Name).Worksheets("工事書元データ (2)").Name = Workbooks("10B工事書作成").Worksheets("工事書一覧"). _
Cells(LastRow, 1) & "_" & Workbooks(wd.Name).Worksheets("工事書元データ (2)").Range("L6").Value

'ブックの名前を変更(1番左のシート名を取得)
Dim s As String
s = Sheets(1).Name
Debug.Print (s)
Workbooks(wd.Name).SaveAs Filename:=(s)

この一連の流れの中でどのようにハイパーリンクを入れていけばいいのか、分かる方ご教授願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pig_vba

2022/11/08 01:19 編集

えっと、まずどれがマクロブックかも定かじゃないんでイミディエイトウィンドウに [? Thisworkbook.Name] って入力した結果を教えてもらえますか? あと、「ハイパーリンクの設定方法自体が分からない」のか「新規作成したブックのフルパスの入手方法が分からない」のか「両方わかるけどどこに記述すればいいのかわからない」のかで回答が変わります。どこまで試せているのかも質問に追記してください。
guest

回答2

0

pig_vba様

返信がおそくなってしまい申し訳ありません。
投げやりな質問内容ですみませんでした。
私VBA初心者でして色々と試してみたのですが、全然上手くいかなかったので
ハイパーリンクの部分を省いてしまいました。
pig_vba様の回答の通り打ち込みましたら、私の理想の動きをしてくれたので
とても感動しました。
本当にありがとうございました。
次からは、質問内容について気を付けます。

投稿2022/11/08 07:00

yuutarouw

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuutarouw

2022/11/08 08:55

Dim path As String path = **wd.path & "\" & wd.Name** With ActiveSheet.Hyperlinks .Add Anchor:=Workbooks("書類").Worksheets("一覧").Cells(LastRow, 1), Address:=path End With 説明不足ですみません。 ブック名が作成書類により変わってしまう為、path=以降の部分をどのように入力するか分かりませんでした。 回答の通り打ち込んだらイミディエイトもブック名とシート名が正確に返ってきました。
guest

0

ベストアンサー

質問者が何も情報くれないので暫定的にですが、こんなものですかね。

VBA

1Sub sample1() 2 3 '新規ブック作成 4 Dim wd As Workbook 5 Set wd = Workbooks.Add 6 Debug.Print (wd.Name) 7 8 Dim form As Workbook: Set form = ThisWorkbook 9 Dim ws As Worksheet: Set ws = form.Sheets(1) 10 Dim entRow As Long 11 entRow = ws.Cells(Rows.Count, 1).End(xlUp).Row 12 13 14 '新規ワークブック Workbookへシートを移動 15 form.Worksheets("工事書元データ (2)").Move Before:=Workbooks(wd.Name).Worksheets("sheet1") 16 17 '工事書元データ (2)を工事名に変える 18 Workbooks(wd.Name).Worksheets("工事書元データ (2)").Name = form.Worksheets(1). _ 19 Cells(entRow, 1) & "_" & Workbooks(wd.Name).Worksheets("工事書元データ (2)").Range("L6").Value 20 21 'ブックの名前を変更(1番左のシート名を取得) 22 Dim s As String 23 s = wd.Sheets(1).Name 24 Debug.Print (s) 25 Workbooks(wd.Name).SaveAs Filename:=(s) 26 27 Dim path As String 28 path = wd.path & "\" & wd.Name 29 With form.Sheets(1).Hyperlinks 30 .Add Anchor:=ws.Cells(entRow, 1), Address:=path 31 End With 32 33End Sub 34

投稿2022/11/08 02:33

pig_vba

総合スコア807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問