• 締切済み

Wordにvbaで貼り付けた検索英単語とリンク先の

WordのVbaを使って辞書サイトのURL +検索単語というハイパーリンクを貼り付けました。 もちろん、辞書サイトの末尾の改行コードは削除しています。 また、辞書サイトは、文書の頭に置いています。それを拾ってそれに検索単語を足しハイパーリンクにする、というマクロです。 作成した時点では、正常に動きます。 ところが、一旦保存しまたその文書を開きハイパーパーリンクを開くと、辞書サイト側で、エラー、と出ます。 原因は、保存して閉じるまでは無かった、 「%0d」 というコードが追加されていることです。 改行を示すコードとのことです。 なんとか取り除きたいのですが、どうしてもうまくいきません。 どなたか、方法を御存知の方、いらっしゃるでしょうか?  よろしくお願い致します。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

このようなケースにuserとしても、サイト作成先としても未経験で、的はずれならご免。 Word VBAにはDocument_open()というイベントがある。 その文書を開いた時、まず初めに実行してくれる処理だ。 それに本件の当初のアドレス(0dが付く前のもの)を張り付けたらどうか。 参考 https://www.relief.jp/docs/word-vba-update-hyperlink-address.html Sub ハイパーリンク先を変更する_図形()  Dim link As Hyperlink  Set link = ActiveDocument.Shapes(1).Hyperlink  link.Address = "https://www.relief.jp/" End Sub "https://www.relief.jp/"の部分に当初設定どおりのURLをセットして自動実行。 _図形(⦆とあるが、地の文章に挿入された場合も変わらないと思う。 1文書にリンクが、この単語検索サイト1つと想定しての場合のコードです。 参考 https://learn.microsoft.com/ja-jp/office/vba/api/word.document.open Document.Open イベント (Word) === ・質問の状況説明が不十分と思う。隠したい気もちだろうが、回答内容のテストが出来ない。 ・Word VBAは、学習資料が少なく、習得に時間が掛かると思う。 個人的には、深入りしない方がよいと思う。

cestplaisant
質問者

補足

ありがとうございます。 マクロが埋め込まれたワード文書の最初にリンク先を設定しています。 それを変えることで、辞書サイトを交換できる、というマクロです。 便利と思い作りましたが、思わぬ落とし穴がありました!

回答No.2

>もちろん、辞書サイトの末尾の改行コードは削除しています。 LF(%0a)を削除する以外に、CR(%0d)も削除して下さい。 また、ハイパーインクにする時に改行(CRやLF)を削除する以外に、文書を開いた際に発生するイベント(Document.Openイベント)で「ハイパーリンクのURLからCRとLFを除去する処理」を入れて下さい。

cestplaisant
質問者

お礼

ありがとうございます。 %0d は削除しているのですが……

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

URLStr が%0Dの入っている文字列として URLStr = Replace(URLStr, "%0D", "") %0DがCRの事だとしたら URLStr = Replace(URLStr, vbCr, "") とすればいかがですか。

cestplaisant
質問者

お礼

ありがとうございます。 ハイパーリンクを埋め込んだまでは正常に機能します。 ところが、いったん保存して閉じ、再度開くと、余計な改行を示す %0d. というコードが入っている、ということです。です。 エクセルでも、ハイパーリンクの動作は不安定なようなので、製造元由来の不具合と思います。 ハイパーリンク設定が複雑なため起きているのかもしれません。 皆様、ありがとうございました!

関連するQ&A