ハイパーリンクを含むテキストを検索するときの検索と置換でのMicrosoft Wordのバグ?


2

Word文書の途中で、テキストを電子メールアドレスに置き換えようとしていました。 [検索]コマンドだけを使用した場合は正常に機能し、Microsoft Wordは置換したいテキストを見つけます。

enter image description here

問題は私が実際に置き換えをやろうとしたときに起こります、そして不思議なことにWordは私にそのテキストが(同じテキストと同じ文書)が見つからなかったと言って、残念ながら置き換えは行われませんでした。

enter image description here

電子メールアドレスがハイパーリンクとして扱われるためです。ハイパーリンクを削除しても問題はありませんが、多くの人が使用できるようにプログラムを作成しようとしているため、デフォルトで自動的に電子メールアドレスをハイパーリンクにするオプションが有効になっています。 。

これを解決するための回避策はありますか?私は他のオプションを検討していますが、これがWordのreplaceコマンドで実行できれば私にとってはずっと簡単になるでしょう。

情報:私はこれをMicrosoft Office 2003およびMicrosoft Office 2013でテストしました。どちらも動作しないので、バージョン関連の問題ではなく、Microsoft Wordのすべてのバージョンに共通の問題です。


回避策が見つかりませんでしたか?私が子供のことを考えることができる唯一の代替手段はこのためにVBaを書くことです...
Dave


ハイパーリンクとプレーンテキストの混在を検索せずに特定の検索を実行してタスクを置き換える方法はありますか。私のテストでは、ハイパーリンクを単独で置き換えようとすると問題は発生しません。
Excellll

@ sunk818のコメントと組み合わせて MS Wordの正規表現 答えを与えます。
agtoever

1
エラープロンプトは表示されませんが、検索を実行して置換した場合...電子メールの表示テキストは変わりますが、プロパティは古い電子メールのままです。検索を成功させて置き換えた後は、リンク上にマウスを移動しても古いEメールが表示されます。
Sun

回答:


2

あなたはVBAを使用することができます...

1)すべてのハイパーリンクを削除します(テキストを残します)。

Sub RemoveHyperlinks()
     With ThisDocument
         While .Hyperlinks.Count > 0
            .Hyperlinks(1).Delete
         Wend
     End With
End Sub

2)あなたの検索と置換を行います...

3)すべてのハイパーリンクを再作成します(ユーザーがWordの自動ハイパーリンクオプションを有効にしている場合)。

Sub ReformatDocument()
     Selection.WholeStory
     Selection.Document.Kind = wdDocumentNotSpecified
     Selection.Range.AutoFormat
End Sub

さらに、自動ハイパーリンクの実際の自動修正オプションを有効または無効にしたい場合は、 "Application.Options.AutoFormatAsYouTypeReplaceHyperlinks"を使用できます。

すなわち: Application.Options.AutoFormatAsYouTypeReplaceHyperlinks = False


3
私はすべてのハイパーリンクが自動ハイパーリンクリンクであるという仮定に頼っているので、役に立ちますが、これは危険なコードだと思います(とても申し訳ありませんが-1)。手動で編集または追加したハイパーリンクはすべて消えます。 Wordが「ハイパーリンク」を許可するので、これが時々発生します。 wwwハイパーリンクだけでなく、文書内の他のファイルやセクションへのリンク 。解決策は、既存のハイパーリンクを何らかのコードに置き換えてテキストを検索/置換または再解析することですが、それにはもう少し複雑なVBAが必要になります。
agtoever

あなたの答えてくれてありがとう、それは役に立ちます。現時点では、別の解決策が見つかるまで、文書内のすべてのハイパーリンクを削除して、ユーザーが自分のプログラムを使用するかどうかをユーザーに許可します。残念ながら@agtoeverが言っているように、自動リンクオプションを有効にしてもリンク先に電子メールアドレスがないかどうかわからないので、手動でハイパーリンクを削除することができます。 agtoever、私は二度と再解析していませんが、大きな文書では遅く、私のコードはタイマーで動くので、私はその考えを捨てました...
Oscar Hermosilla

3
@あなたが正しいにもかかわらず、それはOPとそれを読むかもしれない他のすべての人のための完全な解決策になることを意図していなかった大ハンマーのアプローチです。 ;) "解決策は、既存のハイパーリンクをコードに置き換えてテキストを検索/置換または再解析することですが、それにはもう少し複雑なVBAが必要になります。" OPを支援する回答を提供してください。
Ƭᴇcʜιᴇ007
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.