プロが教える店舗&オフィスのセキュリティ対策術

WORD のVBAを使ったマクロで、URLに検索語句をくっつけてその検索語句の画面を出すマクロを作ったが、どういうわけか、URLと検索語句の間に改行マークが入り、ハイパーリングを開くとエラーが発生する。AIに聞くと、バグ、とのことだが回避する方法を知っている方おりますか?
実は、Offie2004,でも同様の症状がありましたが、少なくとも、閉じるまでは正常に機能してきました。Office2021になってさらに悪化したようです。
よろしくお願い致します。

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

  • SentakuHani
    は検索語句です。この上のコードで取得しています。

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/01/01 20:24
  • つまり、URLの末尾にある改行マークを削除しても、残ってしまう、という問題です。
    旧いバージョンのOfficeでもこの問題はあったのですが、少なくとも、ファイルを閉じるまでは正常に機能していました。しかし、再度開くといつの間にか余計な改行マークがある、ということです。
    VBAのバグらしい、とのことですが、Office2021になってさらにひどくなりました。
    どなたか解決策をご存じの方がいらっしゃるかな、と思いお尋ねしました。

      補足日時:2024/01/01 22:06

A 回答 (4件)

ワードはほぼ使ったことがないので、


かなりいい加減ですが。

' 選択したテキストを取得
Dim SelectedText As String
SelectedText = Trim(Selection.Text)

' URLを作成
Dim linkText As String

linkText = ActiveDocument.Paragraphs(1).Range.Text

' リンクアドレスの改行マークを削除
linkText = Replace(linkText, vbCr, "")
linkText = Replace(linkText, vbLf, "")
linkText = Replace(linkText, vbVerticalTab, "")

' リンクアドレスと選択テキストを結合
Dim linkURL As String
linkURL = linkText & LTrim(SentakuHani)
    • good
    • 0

例えばこんな感じでハイパーリンクへの処理は


するんですけど。
これと検索処理とをどう組み合わせる話かと思ったんですけどね。

Sub test()
Dim hLink As Hyperlink
For Each hLink In ActiveDocument.Hyperlinks
Debug.Print hLink.TextToDisplay
Debug.Print hLink.Name
Next
End Sub
    • good
    • 0

ううん・・。


部分公開だと意図がよみにくいです。

SentakuHaniは検索語句とのことですけど
Selectionは検索した語句で止まってる訳?

起きていることを再現しないと確認できないのに
SentakuHaniは不明、Selectionとの関係性も不明、

Paragraphs(1)と固定なのも不明
複数処理したりしないの?

IF Rightで右しか見てないのに左も切り落とす不思議?

ちょっとうかがいたいんですけどステップ実行はされてますか?
コードを書く時に右辺を実際に確認して書いてるかなと思うんですよ。

一番疑問なのはハイパーリンクの話なのにHyperlinksが出てこないんだけど・・。
呼んだあとってこと?
だったらハイパーリンク関係なくない?
    • good
    • 0

お尋ねしますけど、コード無しでどうして問題点が見つかるとお考えですか?


コードは人によっては作り方が大きく異なりますから、私のコートで貴方の問題解決に繫がるとは思えないのですが。
しかも文字が入るとかなら削ればいいだけの様な気がするんですが、そういう話でもないの?
この回答への補足あり
    • good
    • 1
この回答へのお礼

コードはこんな感じですが。

' 選択したテキストを取得
Dim SelectedText As String
SelectedText = Trim(Selection.Text)

' URLを作成
Dim linkText As String

linkText = ActiveDocument.Paragraphs(1).Range.Text

' リンクアドレスの末尾の改行マークを削除
If Right(linkText, Len(vbCrLf)) = vbCrLf Then
linkText = Left(linkText, Len(linkText) - Len(vbCrLf))
linkText = Right(linkText, Len(linkText) - Len(vbCrLf))
End If

' リンクアドレスと選択テキストを結合
Dim linkURL As String
linkURL = Replace(linkText, bcrlf, "") & LTrim(SentakuHani)


linkText = Left(linkText, Len(linkText) - Len(vbCrLf))
linkText = Right(linkText, Len(linkText) - Len(vbCrLf))
の部分は苦し紛れで作りました。そもそもは上の部分のみでした。

よろしくお願いします。

お礼日時:2024/01/01 19:38

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A