web-dev-qa-db-ja.com

Excelセルの単語に埋め込まれているリンクを一括置換する方法

リンクのある単語の膨大なリストがあります。すべてのURLには、繰り返されるテキストが含まれています。このテキストを別のテキストにまとめて置き換えたいと思います。現在、「すべて置換」は単語間のみを検索し、単語の後ろに埋め込まれたハイパーリンクは検索しません。

助けてください。ありがとう。

1
Karolinger

これを行う唯一の方法は、マクロを使用することです。

Public Sub ReplaceHyperlinkURL(FindString As String, ReplaceString As String)
Dim LinkURL, PreStr, PostStr, NewURL As String
Dim FindPos, ReplaceLen, URLLen As Integer
Dim MyDoc As Worksheet
Dim MyCell As Range
On Error GoTo ErrHandler

Set MyDoc = ActiveSheet
For Each MyCell In MyDoc.UsedRange
If MyCell.Hyperlinks.Count > 0 Then
 LinkURL = MyCell(1).Hyperlinks(1).Address
 FindPos = InStr(1, LinkURL, FindString)
 If FindPos > 0 Then 'If FindString is found
  ReplaceLen = Len(FindString)
  URLLen = Len(LinkURL)
  PreStr = Mid(LinkURL, 1, FindPos - 1)
  PostStr = Mid(LinkURL, FindPos + ReplaceLen, URLLen)
  NewURL = PreStr & ReplaceString & PostStr
  MyCell(1).Hyperlinks(1).Address = NewURL 'Change the URL
  End If
 End If
Next MyCell
Exit Sub
ErrHandler:
MsgBox ("ReplaceHyperlinkURL error")
End Sub

ReplaceHyperlinkURLコードは、VBAコードモジュールに配置する必要があります。スプレッドシートから、Alt + F11を押してVBAエディターを開きます。次に、メニューから[挿入]-[モジュール]を選択します。コードをコピーしてモジュールに貼り付けます。次に、モジュールを保存します。

プロシージャを実行するには、次の行を含むマクロを作成し、Excelでマクロを実行します。必ずFindTextを検索したいアドレスの部分に置き換え、ReplaceTextを置き換えたいテキストに置き換えてください。

ReplaceHyperlinkURL( "FindText"、 "ReplaceText")を呼び出します

ソース

2
user201262