• ベストアンサー

Exelのハイパーリンクについて困っています。

現在、業務上でExel2003を使用しております。 ファイル同士を異なる階層でリンクしているのですが 1文字異なることに200超のハイパーリンクを手作業で 変更する事が業務上の負担となってしましまい、 何か良い方法が無いものかと困っております。 何か良い方法やマクロ等がございましたら、 教えてください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • x0000x
  • ベストアンサー率52% (67/127)
回答No.2

マクロで一括変換するな以下でできます。 現在表示されているシート(ActiveSheet)に関して変更前アドレスを変更後アドレスに一括で置き換えます。 マクロに際し、変換前と変換後のアドレスの入力要求に答えます。 (入力を省略した場合は処理を中止します。) 一括変換終了時に変換対象件数を表示します。 念のため、イミディエイトwindowに変換対象としたHyperlinkのセルアドレスとセル値、変換前アドレス、変換後アドレスを表示しています。 Sub chgHyperlinkAddr() Dim src As String Dim dst As String src = InputBox("変更前のHyperlinkアドレスを入力します。(入力なしは終了)", "元のアドレス") If Trim(src) = Empty Then Exit Sub dst = InputBox("変更するHyperlinkアドレスを入力します。(入力なしは終了)", "変更アドレス") If Trim(dst) = Empty Then Exit Sub If MsgBox("変更前:" & src & vbCrLf & _ "変更後:" & dst & vbCrLf & _ "一括変換します。よろしいですか?", vbOKOnly) <> vbOK Then Exit Sub Dim cnt As Long cnt = 0 Dim hLnk As Hyperlink For Each hLnk In ActiveSheet.Hyperlinks If hLnk.Address = src Then Debug.Print "["; hLnk.Range.Address; "]Text="; hLnk.TextToDisplay; ",Address="; hLnk.Address; "⇒"; dst cnt = cnt + 1 hLnk.Address = dst '新アドレスに置き換える End If Next MsgBox cnt & " 件のHyperlinkアドレスを置き換えしました。" End Sub お試しを!!

mama0407
質問者

お礼

ありがとうございます^^ 早速、試してみます。。 やはり、マクロを組むのが一番の近道だったのですね。。 ありがとうございます。

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

A1にリンクするファイルのフォルダの絶対パス B1にファイル名 C1に拡張子 D1=HYPERLINK(A1&"\"&B1&"."&C1) のようにして変更のある内容を変数としてしまえばいいのでは?

mama0407
質問者

お礼

早速のアドバイス、ありがとうございます。 この業務は、元になるファイルから補助的なファイルを 読み出すようにハイパーリンクを設定しております。 1M程度のマニュアルを作成する過程で起きた悩みでした。 この方法で作成時に設定していくとファイル名やフォルダ名が 変更になった際に、再度設定しなおしたほうがよろしいのでしょうか。 よろしくお願いいたします。

関連するQ&A