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

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

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

Q&A

解決済

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

yuutarouw
yuutarouw

総合スコア1

2回答

0グッド

0クリップ

284閲覧

投稿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)

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

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/11/08 01:03

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

pig_vba

2022/11/08 01:19 編集

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

回答2

0

pig_vba様

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

投稿2022/11/08 07:00

yuutarouw

総合スコア1

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

2022/11/08 07:50

こちらの回答が他のユーザーから「質問に対する回答となっていない投稿」という指摘を受けました。

回答へのコメント

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=以降の部分をどのように入力するか分かりませんでした。 回答の通り打ち込んだらイミディエイトもブック名とシート名が正確に返ってきました。

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

総合スコア670

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る