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

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

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

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

ハイパーリンク

ハイパーリンクとは、ハイパーテキストにおいて、複数の文書を結び付ける役割を担う「参照」である。単にリンクとも呼びます

Q&A

1回答

140閲覧

マクロのハイパーリンクのリンク先がローカルフォルダになっている

yamaki

総合スコア19

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

ハイパーリンク

ハイパーリンクとは、ハイパーテキストにおいて、複数の文書を結び付ける役割を担う「参照」である。単にリンクとも呼びます

0グッド

0クリップ

投稿2024/04/13 06:57

実現したいこと

マクロのハイパーリンクをファイルサーバーの絶対パスにしたい

発生している問題・分からないこと

現在、以下のようなマクロを使っています。
①データを入力
②「保存」ボタン押下
③エクセルを新しく作成し、お客さんの詳細情報を入力する(1エクセルファイルにつき、1人のお客様情報)
④③のエクセルを社内の共有ファイルサーバーに保存する
⑤④に対して、ハイパーリンクを作成する。

上記のマクロファイルの運用を始めて半年以上たちますが、問題なくハイパーリンクが機能していました。
ただ、最近気づいたのですが、約3か月ほど前のハイパーリンクがローカルのファイルがリンク先になっており、
リンクが機能していないです。
※ファイルの保存は適切にできています。

原因を探ると、ハイパーリンクのアドレスがローカルパスになっていました。
(右クリック→「ハイパーリンクの編集」を選択してアドレスを確認。)
マクロ上では、絶対パスを指定してハイパーリンクを作成していたのですが、どうしてローカルファイルが指定されてしまったのでしょうか。
また、どうして古いハイパーリンクのみローカルファイルになってしまったのでしょうか。

何か、改修方法ありますでしょうか。

エラーメッセージ

error

1右クリック→「ハイパーリンクの編集」を選択してアドレスを確認すると、ローカルパスにてハイパーリンクが設定されていました。 2 3こんな感じのローカルパスが設定されていました。 4C:\Users\tokyo\AppData\Roaming\Microsoft\Excel\\NO10000太郎さま

該当のソースコード

VBA

1Const constCosutomorSaveFolder As String = "\\192.168.0.xxx\xxx1\お客様情報" '保存先 2Const constCosutomorGenshiFolder As String = "\\192.168.0.xxx\xxx1\お客様情報の原紙" 'お客様情報の原紙の場所 3Const constCosutomorGenshiFileName As String = "お客様情報原紙(空調).xlsm" '客様情報原紙(空調) 4 5 '一覧表シートへ転記作業 6 Dim lngEndRow As Long 7 8 With ThisWorkbook.Worksheets("お客様一覧") 9 lngEndRow = .Cells(Rows.Count, 2).End(xlUp).Row 10 11 .Cells(lngEndRow + 1, 3).Value = [営業窓口].Value 12 .Cells(lngEndRow + 1, 4).Value = [営業所担当者].Value 13 .Cells(lngEndRow + 1, 2).Hyperlinks.Add Anchor:=.Cells(lngEndRow + 1, 2), _ 14 Address:=constCosutomorSaveFolder & "\" & fileName, _ 15 TextToDisplay:=[お客様No].Value 16’↑ハイパーリンク設定 17 End With 18 19 20 ' ハイパーリンク先にファイルを保存 21 FileCopy constCosutomorGenshiFolder & "\" & constCosutomorGenshiFileName, _ 22 constCosutomorSaveFolder & "\" & fileName 23

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

一致するような情報がありませんでした。

補足

特になし

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

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

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

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

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

ikedas

2024/04/13 12:29

コードを過剰に省略や要約せず、現象を再現できるだけのコードを示してください。 ちなみに、このコメント欄に書くのではありません。質問文を編集して書いてください。
guest

回答1

0

約3か月ほど前のハイパーリンク
古いハイパーリンクのみローカルファイルになってしまった

  1. どのくらいの頻度でマクロ実行していますか?
  2. 日々増えている新しいハイパーリンクは問題ないが、約3か月ほど前のものだけローカルパスに変わった、ということでよいですか?
  3. 約3か月ほど前の作成時点では問題なかったハイパーリンクがいつのまにか変わってしまった、ということですか?
    それとも気づかなっただけで元々おかしかった可能性はありますか?
  4. マクロの動作ログの類(デバッグ用コンソール出力をそのままファイルにリダイレクトしたやつ等)はありますか?
  5. おかしくなったハイパーリンクはどのくらいありますか?
    1. 特定の1件のハイパーリンクのみおかしくなり、それがたまたま3か月ほど前だったのですか? それとも複数件ありますか?
    2. 複数件だとして、一定範囲(一定期間)のハイパーリンクがおかしくなったのですか?
      もしくは、一定期間(3か月ほど)経つと全ておかしくなっていきますか?
  6. マクロのコードの変更履歴(gitやsvn等バージョン管理とか)は確認できますか?
  7. 「一覧表シート」にアクセスし、編集できるユーザは存在しますか? (ご自身を含めて)
  8. また、マクロ以外で「一覧表シート」のファイルが日常的に編集されるワークフローはありますか?
  9. 「一覧表シート」自体を複製するマクロではないようですが、マクロ以外で定期バックアップを取ったりしていますか?
  10. もしもバックアップがある∧マクロの定刻更新以外でファイルが変更されないなら、更新タイムスタンプから手動による変更でないことを確認できませんか?

おかしくなった件数次第で「マクロがおかしくなったというよりは、誰かの操作で変更してしまった」的な案件のような気がしますが想像でしかないので
まずはマクロの問題か誰かの操作等が原因かの切り分けが必要だと考えます。

過去の原因特定および今後類似の問題が発生した場合の原因特定のために
ヒアリングとか(あれば)ログ・バックアップの確認とか(なければ)そういった環境用意とか、諸々調査や検討してみてください。

投稿2024/04/13 15:47

pecmm

総合スコア406

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

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

yamaki

2024/04/14 02:38

ご確認いただき、ありがとうございます。 1.平均で3回/1日かと思いますが、その時次第です。 2.3か月より以前のリンクはすべてローカルパスが指定されいているようでした。 3.私もハイパーリンクを頻繁に使用していたため、当初からローカルパスを指定していた可能性は低いかと思います。 4.ログを出力するようにしていますが、ファイルの保存・ユーザーの入力値を出力していたもののため、 原因究明に役立つログはありませんでした。 5.数百件あるようです。 6.バージョン管理ソフトは使用していません。 7.シートの保護はしていないため、誰でも使用可能です。 8.あります。 9.バックアップは取っていないです。 10.バックアップがないため、確認できません。 私もpecmm同様に誰かの操作ミスの気がしています。 ログ出力内容を見直し、マクロの不備なのか切り分けてみるようにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問