dポイントプレゼントキャンペーン実施中!

ハイパーリンク先が突然一括して内容が変わっていました。元に復元する方法を教えてください。
現在音楽ソフトMeseScoreで楽譜を作成し、エクセルの一覧表からリンクして楽譜を呼び出しています。数は2000位あります。今までは例えば「file:///C:\Users\NEC-PCuser\Documents\1楽譜作成\ACO\ア行\ありがとう.mscz-」とカーソルを置くと表示されていましたが突然すべてが「Documents\1楽譜作成\ACO」の部分が「AppData\Roming\Microsoft\Excel」変わり「file:///C:\Users\NEC-PCuser\AppData\Roming\Microsoft\Excel\ア行\ありがとう.mscz-」のように、そのエクセルの他のシートも含め全部変わってしまいました。(Web上でマクロを使う旨の説明があり、試してみましたが、良く分かりませんで諦めていました)今200位は個別に復元しましたが、大変な作業になり困っています。一括復元のやり方をお教え下さい。よろしくお願いします。

質問者からの補足コメント

  • 早速のご教示ありがとうございます。
    置換につきましては以前にも試しましたが、カーソルをかざすと表示されるだけ(エクセル画面上には入力表示されていない)なので、該当がないということでうまくいきませんでした。今もご教示通り行いましたがうまくいきませんでした。別な方法をお教えください。

      補足日時:2019/09/23 17:32
  • うーん・・・

    早速にありがとうございます。
    1、復元はエクセルの個別ファイルの一覧表のにある楽曲名(個別)のセルを右クリックで、「リンクの編集」をクリック、リンク先を「Documents⇒1楽譜作成⇒ACO⇒ア行⇒ありがとう」とクリックし個別に復元しています。
    2、一覧表はエクセルで作成し、目次とし、楽曲名を記入しており個別にリンクさせています。エクセルの1つのシートに1100位の楽曲を入力しその他のシートにも同程度作成しています。
    3、「自動回復用フォルダ」へのフォルダ移動はそのようなフォルダを作ったこともありませんし、存在を知りませんでした。
    よろしくお願いします。

      補足日時:2019/09/23 18:11
  • つらい・・・

    ご教示ありがとございます。
    申し訳ありません。マクロの作成についての知識がありません。
    申し訳ございませんが、出来ましたら、その辺からご教示ください。

      補足日時:2019/09/23 20:41
  • つらい・・・

    ご丁寧にご教示ありがとうございました。
    やってみましたが、うまくいきませんでした。
    「完了しました。処理件数は1166件です。」と出ましたが、内容は変わっていませんでした。
    大変お手数お掛けしました。マクロの本を先日買い求めましたが、まだ不勉強ですので、これから研究してみます。このように一括して内容が変わったのはパソコンの不具合かもしれません。本当にありがとうございました。

      補足日時:2019/09/23 22:43

A 回答 (8件)

リンクのあるシートを開いているなら微妙な表現ですが、やり方は、おそらく間違っていないかと、


>デスクトップにある曲名2というブックのセルを右クリックで、「リンクの編集」をクリックで、現在書かれているリンクアドレスにRomingの文字は含まれていますか?
どの様なリンクアドレスになっているのでしょうか、、

プログラム(処理)の内容を説明しておきます。
上から下に実行されていきます。
For Each h In ActiveSheet.Hyperlinks は、アクティブシート内のハイパーリンク(編集で出てくるリンク)に対し
If h.Address Like "*Roming*" Then  リンクのアドレス(文字列)の中にRomingが含まれていれば
h.Address = Replace(h.Address, "AppData\Roming\Microsoft\Excel", "Documents\1楽譜作成\ACO", compare:=vbTextCompare)
リンクのアドレスに含まれるAppData\Roming\Microsoft\ExcelをDocuments\1楽譜作成\ACOに置き換えなさい。compare:=vbTextCompare テキスト並びですよ
i = i + 1 カウントを1足して です。
End If
つまり、0件と言う事は、IFからEnd Ifの間を一度も通らなかったことを意味しています。
逆に言うと、シート内のすべてのリンク文字列にRomingが含まれていないと言う事になります。

いずれにしても、最初の原因は、何だかの不具合があった為と思われます。リンク先ファイルが自動保存先のアドレスになるのは、私は知りませんでしたし
複数のファイルで同様の現象というところも、合点がいきません。複数のブックで不具合と思われる事象が発生した場合は、基本として
Officeの修復を行います。バージョンなどで手順が若干違いますが、Google先生に聞けばすぐわかります。
VBAで書き換えてしまうというのは、少し強引なのかも知れません。

勿論、時間は限られますが、最後までお付き合いいたします。

また、bonaron氏のご提案(回答)も確認してみてください。
根本的な原因が解消され、不具合が治るかも知れません。
    • good
    • 0
この回答へのお礼

いろいろアドバイスありがとうございました。
セルを右クリックしリンクの編集をクリックするとアドレス(E)にAppData\Roming\Microsoft\Excelが表示されます。
このところパソコンの調子が悪いので、それの不具合と思います。又、3か月位前までのデータは別にバックアップもしていますし、リンク先の元データはそのまま存在しているので、利便性が失われただけですから1件ずつ修復します。
このような素人にお付き合いいただき、ありがとうございました。

お礼日時:2019/09/25 09:58

知らない間に何か事故があったのでしょうか。


https://www.atmarkit.co.jp/ait/articles/1709/29/ …

ハイパーリンクはデフォルトで相対パスになっていますから
そのブックを「Documents\1楽譜作成\ACO」に移動するだけで回復するような気がします。

まずブックの位置を確認しましょう。
VBE の画面で
ツールバーの [表示] - [イミディエイトウィンドウ] で、イミディエイトウィンドウを表示し
? Thisworkbook.Path
と入力し Enter。

これで現在のファイルの在処が表示されますが、正しいですか?

正しくなければ名前を付けて保存で、在るべきところに保存し直してみてください。
すでに同じ名前のファイルがあった場合は、安全のために
上書きせずに、名前も変えてみた方がよいでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。正しい場所(デスクトップ)にブックは表示されています。
今困っているのは、このブックはドキュメント内にある音楽ソフトで作成した楽譜数千の曲名を一覧にまとめ目次として使用しており、この目次からドキュメント内の楽譜にリンクさせています。エクセルの曲名のセルにカーソルをかざすと、リンク先である「Documents\1楽譜作成\ACO」の部分が「AppData\Roming\Microsoft\Excel」に突然すべてが変わりリンク出来なくなり困っています。(もう2か月以上経過しました)一括復元が出来ればよいのですが、今は諦めて個別にハイパーリンクの編集で復元していますが件数が多いので、何か出来る方法があればと、相談した次第です。素人でもわかる方法があればご教示ください。よろしくお願いします。

お礼日時:2019/09/24 23:44

すみません。


今一度、トライさせてください。
私の検証不足かも知れません。
コードを改めて示します。先ほどのコードを削除して下記をコピペしてください
認識が浅かったのだと思ます。2度手間をさせてすみません。

Sub Hyperlink変更2()
Dim h As Hyperlink, i As Long
For Each h In ActiveSheet.Hyperlinks
If h.Address Like "*Roming*" Then
h.Address = Replace(h.Address, "AppData\Roming\Microsoft\Excel", "Documents\1楽譜作成\ACO", compare:=vbTextCompare)
i = i + 1
End If
Next h
MsgBox ("完了しました。処理件数は" & i & "件です。")
End Sub
    • good
    • 0
この回答へのお礼

有難うございます。
エクセルの楽曲の一覧表となる「デスクトップにある曲名2というブック」のシートを開いてAlt F11から開いた「Microsoft Visual for Applications・曲名2.xlsx」の画面で、挿入⇒標準モジュール(M)から出た画面にお示し頂いたコード「Sub Hyperlink変更2()からEnd Sub」までをコピーし、コードの途中にカーソル左クリックでF5を押しました。今度は「完了しました。処理件数は0件です。」と出ました。操作が間違っているでしょうか、画像を貼付しようとしたのですが、重いのか、〇がぐるぐる回って添付できません。
大変お手間を取らせ、申し訳ございません

お礼日時:2019/09/24 22:43

なるほど。


このコードは、自ブックに対して実行するので、
対象のブックを開きます。
マクロを書くVBEを開きます。AltキーとF11を同時に押します。
VBAエディタが起動します。 図で示します。
上のタグ挿入をクリックし、標準モジュールをクリックし標準モジュールを作ります。

表示されたエディタ画面に下記をコピペします。

コードは、案内を追加しました。

'-----------------ここから
Sub Hyperlink変更()
Dim h As Hyperlink, i As Long
 For Each h In ActiveSheet.Hyperlinks
  h.Address = Replace(h.Address, "AppData/Roming/Microsoft/Excel", "Documents/1楽譜作成/ACO")
  i = i + 1
 Next h
 MsgBox ("完了しました。処理件数は" & i & "件です。")
End Sub
'----------------ここまで

エクセルのみが開いていると仮定して、OSのツールバーを右クリックして
表示される、ウィンドウを上下、または、左右に表示するを選びます。
ディスプレイ上にエクセルシートとVBEが並んで表示されます。

ハイパーリンクを書き換えたいシートを選択します。

VBEのコード(内)にカーソルを置き(クリックでOK)
F5を押してください。F5は、カーソルのある場所のプロシージャ(Sub)内の
プログラムを実行します。

先ずは、シートコピーなどでデモを作り、そのシートで実行して
不具合がないか検証しましょう。

対象のシートすべてで実行したら、先ず、上書き保存します。
そして、このVBAブックを残すのであれば、名前を付けて保存します。

その時、VBAを残すのであれば、マクロ有効ブックにする必要があります。

まあ、VBAは必要ないでしょう。
「ハイパーリンクを一括復元の具体的なやり方」の回答画像5
    • good
    • 0
この回答へのお礼

何度ものご丁寧にお応え頂き有難うございました。
私のマクロに対する知識がない為、お手数をお掛けしました。
最近パソコンの調子が悪い為発生したものと思われます。年寄りには簡単ではなさそうですが、マクロの研究も致します。
本当に有難うございました。

お礼日時:2019/09/23 22:51

キーワードコピーの訂正が不備でした


正しくは、

Sub Hyperlink変更()
Dim h As Hyperlink
 For Each h In ActiveSheet.Hyperlinks
  h.Address = Replace(h.Address, "AppData/Roming/Microsoft/Excel", "Documents/1楽譜作成/ACO")
 Next h
End Sub

検証した後の Debug.Print h.Addressも入れっぱなし
"Documents\1楽譜作成\ACO"でも
"Documents/1楽譜作成/ACO"でも
まあ、書き込み側なので問題ないですが、
気持ち悪いので、、一応。
    • good
    • 0

アクティブシート内のすべてのハイパーリンクを検証して


AppData/Roming/Microsoft/Excelの文字をDocuments/1楽譜作成\ACOに変更します。
ハイパーリンク内の¥は、/ になります。
表面上の文字は変わりません。
新規シートなどにいくつかコピペでリンクを作り試してください。

Sub Hyperlink変更()
Dim h As Hyperlink
For Each h In ActiveSheet.Hyperlinks
Debug.Print h.Address
h.Address = Replace(h.Address, "AppData/Roming/Microsoft/Excel", "Documents/1楽譜作成\ACO")
Next h
End Sub
    • good
    • 0

200位は個別に復元しましたが、


どの様にされたのでしょうか?
値(アドレスは、)何が持っていますか?一覧表のどこに2000くらいあるのでしょう。
リンクアドレスを見ると自動回復用のアドレスに代わっているようですが、、
回復前のExcelは存在しないのですか?あと、自動回復用フォルダに該当ファイルが移動しているのでしょうか?

VBAで作ろうと思いますが、上記をお知らせください。
    • good
    • 0

こんにちは、該当のシートでCtrl+Hを押して置き換えを行います。



変わった文字れる(変えたい文字列)と変えたい文字列(変更後文字列)をいれ
置き換えで一つずつ確認しながら行うか、すべて置き換えで一気に行うかは、自由です。
図は参考です。内容はよく確認をして実行してください。
「ハイパーリンクを一括復元の具体的なやり方」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!