• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelでハイパーリンクの一括置換(指定範囲))

Excelでハイパーリンクの一括置換方法を教えてください

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 このサンプルは、Excel 2003 の仕様だと思います。  For Each H In Range("B2:B101").Hyperlinks   H.Address = Replace(H.Address, "\\abc", "\\def")  Next Excel2002がありませんので、その下位バージョンのExcel2000で試してみました。 かなり何度も繰り返しながら、いろいろ検討してみましたが、結論からすると、マクロからでは不可能でした。もちろん、キーロガーのUSWC などのツールで、ワークシートの表から直すことは可能だとは思いますが、あまりにも効率が悪すぎます。 それは、たぶん、そのハイパーリンクはコピーなどで作られたものだとは思いますが、Hyperlinks オブジェクトとセルとが、マクロのオブジェクトでは連動していないのです。 こちらで作ったサンプルでは、例えば、C3 のハイパーリンク自体が出てこなかったり、セル上にないものが、ハイパーリンクの検査マクロでは、出てきたりしています。これでは、不可能です。 そこで、私のアイデアですが、C列の範囲だけを、Webページとして発行し、それをテキストエディタで、ソースの中でうまく置換して、その htm(または、html)ファイルを、IEなどで立ち上げ、その範囲を、コピー&ペーストで、Excelに戻す方法というのはどうでしょうか。 上位バージョンでは、そのようなことはないものの、今のバージョンでは、そうした方法しか思いつきません。

kaduno
質問者

補足

こんにちは。 ありがとうございます。 Excel2003の環境は職場にありましたので、5列×5行のデータで再チャレンジしてみました。 A列にハイパーリンク付きテキストを5行用意して、そのA列をB~E列へとコピーし、その後  For Each H In Range("C:C").Hyperlinks   H.Address = Replace(H.Address, "旧文字列", "新文字列")  Next のマクロを実行すると、自宅のExcel2002で困っていた現象と同様にA~E列まで全部置換されてしまったのですが、マクロ実行直前のブックを一旦保存し、再び開いてマクロを実行したら、C列だけ置換してくれました。 今、自宅のExcel2002で確認しましたが、Excel2003と同様の現象でした。 ということは、列のコピー直後の実行がNGということなのでしょうか。 マクロの実行とは無関係のような気がしますが…

関連するQ&A

  • VBA シート内ハイパーリンク置換がうまくいかない

    お世話になります。 今、エクセルシートのセルにあるハイパーリンクの置換をVBAで行おうとしています。 ファイルサーバの移設に伴い、ファイルサーバ内に保存されているエクセルファイル内のハイパーリンクの一部置換を実施すべく、下記のとおり作ってみましたがうまく置換してくれません。。 置換したいエクセルファイルはlist_TM.txtにフルパスでリスト化しており、ファイルを開く→ハイパーリンクがあれば置換→上書き保存して閉じる の繰り返しを実行しています。 下記を実行したあと、実際にファイルを開いて置換された結果を確認すると、\\server1\tantou\Datasave\sample.xls → C:\Datasave\sample.xlsとなってしまっており、当方が所望する\\server2\kyoyu\tantou\Share\Datasave\sample.xlsになっていませんでした。原因がよくわからず質問させて頂いた次第です。 なお途中でTargetRowとTargetColumnを挟んでいますが、この2行はハイパーリンクがある行と列をちゃんと拾ってくれているかどうか確認するために入れたので、無視してい頂いていいかと思います。 お力添えの程、宜しくお願い致します。 Sub Link_OKIKAE() Dim i As Long Dim buf As String Dim AWBN As String Dim HL As Hyperlink Open "C:\temp\test\list_TM.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf Workbooks.Open buf AWBN = ActiveWorkbook.Name For i = 1 To Worksheets.Count Sheets(i).Activate For Each HL In ActiveSheet.Hyperlinks TargetRow = HL.Range.Row TargetColumn = HL.Range.Column HL.Address = Replace(HL.Address, "\\server1\tantou", "\\server2\kyoyu\tantou\Share") Next HL Next i Workbooks(AWBN).Save Workbooks(AWBN).Close Loop Close #1 End Sub

  • ハイパーリンクをコピペしてください

    マクロで選択した各列の5行目以降に単独または連続コピペしたハイパーリンク付き文字列を下記のマクロにて第二階層分を上から順番にそのおのおの同じ行の隣の列にテキストファイルにてコピペ(セル内32767文字制限以下)してから置き換えで「*)は、」と「。*」で文字列を省略してください。 Sub HyperlinkFollowTest() On Error Resume Next Dim h As Hyperlink Dim sht As Worksheet Set sht = ActiveSheet '// シートの全ハイパーリンクをループ For Each h In sht.Hyperlinks '// ハイパーリンクを実行 Call h.Follow Next End Sub

  • エクセル 関数式内の文字列置換

    エクセルで 関数式内に入力されている文字列を置換する事は可能でしょうか。 具体的には、C列の1行目~数百行に =hyperlink("\\○○○\×××\△△△",d1)と入っている式で、×××を◎◎◎に一括で置換したいのですが。 よろしくお願いいたします。

  • EXCEL VBA 行列操作

    どなたか教えてください。 下記の様にA1からH5までの範囲に値がある行とない行があります。 空白セルを無視しA10に行列を操作し(行列入れ替え?)、さらに上詰め でコピーしたいのです(上にある行から列順に)。 よろしくお願いします。 例です  A   B   C   D   E   F  G   H 1 2                   aaa bbb 3 ccc ddd eee fff ggg 4 5 hhh ~ 10 aaa 11 bbb 12 ccc 13 ddd 14 eee 15 fff 16 ggg 17 hhh

  • Excelシート上のハイパーリンクの一括削除

    Excelシート上にあるハイパーリンクの一括削除はできるのでしょうか? 現在、ある列にハイパーリンクされたデータがあります。 これを、列全体を一括でリンク解除したいのです。 セル毎に、右クリック→ハイパーリンク(H)→ハイパーリンクの削除 で一つずつ解除出来ますが、これを列単位で一括して行いたいです。 よろしくお願いいたします。

  • 条件を指定しての置換

    Perlでの文字置換の質問です。以下のように文字列があった場合に +AAA a01 name +BBB b01 name +CCC c01 name +DDD d01 name ・ ・ +CCCと+DDDの間にあるnameの文字のみaddressに置換したい時は どのようにPerlで記述したらよろしいでしょうか。 全てのnameがaddressになってしまい困っています。 よろしくお願いします。 完成形↓ +AAA a01 name +BBB b01 name +CCC c01 address +DDD d01 name

  • テキスト処理のシェルプログラム

    UNIXシェルもしくはPerlでテキスト処理のシェルスクリプト を作成したいのですがご教授お願いします 1000行あるテキストファイルを 2行単位で区切り2行単位で横一列へ置換しテキストへ出力したいのですが 例 処理前 aaa bbb ccc ddd eee fff 処理後 aaa,ccc,eee bbb,ddd,fff ご教授よろしくお願いします

  • Excelの関数に詳しい方、お願いします。

    わかりづらい説明かもしれませんが、よろしくお願いします。 例として、 AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF ・ ・ ・ といった文字列がエクセルの先頭列A1~A100までずらりと並んでいるとします。 各アルファベットには任意の数字(日付など)が入るとして、この並んだ百件のデータからCCCの部分の最大値を表示するための適切な関数があれば教えていただけないでしょうか? 現在少々急いでいるため言葉足らずで申し訳ありませんが、よろしくお願いいたします.

  • 【アクセス】ハイパーリンク アドレスと表示文字列のどちらも置換したい

    テーブル1のフィールド「アドレス」をハイパーリンク型にし、 レコードに 表示文字列:C:\Users アドレス:C:\Users と入れています。 ここで 置換と検索ダイアログを呼び出して 検索する文字列:C:\ 置換後の文字列:D:\ にしてすべて置換をおしても 表示文字列しか置換されません。 表示文字列もアドレスも同じように置換するにはどうすればいいのでしょうか? よろしくお願い致します。(当方アクセス2003です)

  • エクセル2007 ハイパーリンクについて

    シート名は4月だとした時   A   B    C      D  E F G H I J K L M 6  1  田中  港区    1000 7  2  佐藤  品川区   2000 8  3  高橋  江戸川区  3000 9  4  井上  荒川区   4000 10  5  山田  練馬区 と行も列も沢山ある表とします A列には1~順番に数字が入ってますので検索の基準にしたい。 表が大きいので A列を基準としてvlookup関数で検索しジャンプする式を作成したいのですが うまく出来ません 検索する数字をH2にいれた時H3をクリックするとその行に飛ぶ関数を教えて下さい。 =hyperlink(vlookup,h2,a1:a8000,2,false) と入力してもエラーになります。 確かに右クリックでハイパーリンク作成でA1とした場合(book1-sheet1!A1)と 直接入力 =hyperlink("sheet1!A1) では表示される数式が違います 上記数式では駄目と分かりますがどうすればよいのか私の知識では無理です どなたか教えて下さい