重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

1つのファイルに1種類の図表番号が約2,000ほどあり、何らかの原因でスタイルが標準になってしまいました. 修正用のプログラムは以下のようになっていますが、エラーはありませんがスタイルが変更になっておりません。ご指摘よろしくお願いします。

Sub B015参考文献スタイル変更()
Dim rng As Range
Dim searchText As String
Dim styleName As String

' 検索するラベルのテキスト
searchText = "参考文献[0-9]{1,}"

' 適用するスタイル名
styleName = "マ_連番"

' ドキュメント全体を範囲に設定
Set rng = ActiveDocument.Content

' ワイルドカードを使用して検索とスタイル適用
With rng.Find
.ClearFormatting
.text = searchText ' 数字が続くラベルを検索
.MatchWildcards = True
.Format = True
.Execute

Do While .found
' スタイルを適用
rng.style = ActiveDocument.Styles(styleName)
rng.Collapse wdCollapseEnd
.Execute
Loop
End With

MsgBox "ラベル「" & searchText & "」にスタイル「" & styleName & "」が適用されました。"
End Sub

A 回答 (3件)

VBAで処理する前に、通常の高度な検索機能での処理として、以下の


[検索する文字列]で検索でいているのでしょうか?
 参考文献[0-9]{1,}

検索対象が[図表番号]で自動挿入されたものならば、挿入した表記は
ラベル名+半角スペース+図表番号としての連番(SEQフィールド)で
用意されます。
 参考文献 [0-9]{1,}
上記でワイルドカード検索が出来ているなら、一部の修正するだけで
済みますが、私が試したものだと検索できませんでした。
ラベル名だけとか連番部分だけなら検索したのですが、続けた場合の
処理は何故かできなかったからです。

もしも、通常の高度な検索での処理ができない場合は、以下のような
検索に切り替えたほうが良いかもしれません。
[ Alt+F9 ]キーでフィールドコードを表示。
[高度な検索]で、[ワイルドカード]と[あいまい検索]へのチェックを
入れないで、[検索する文字列]を以下のようにします。
 参考文献 \d SEQ 参考文献
これで検索出来た場合は、マクロを上記手順で処理します。

Sub B015参考文献スタイル変更()
Dim rng As Range
Dim searchText As String
Dim styleName As String

' 検索するラベルのテキスト(参考文献ラベルのみ)
searchText = "参考文献 ^d SEQ"

' 適用するスタイル名
styleName = "マ_連番"

' ドキュメント全体を範囲に設定
Set rng = ActiveDocument.Content

' フィールドコードを表示する
ActiveWindow.View.ShowFieldCodes = True

' 検索とスタイル適用
With rng.Find
 .ClearFormatting
 .text = searchText ' 数字が続くラベルを検索
 .Format = True
 .Execute

 Do While .found
 ' スタイルを適用
 rng.style = ActiveDocument.Styles(styleName)
 rng.Collapse wdCollapseEnd
 .Execute
 Loop
End With


' フィールドコードを非表示にする
ActiveWindow.View.ShowFieldCodes = False

MsgBox "ラベル「" & searchText & "」にスタイル「" & styleName & "」が適用されました。"
End Sub
    • good
    • 0
この回答へのお礼

Enunokokoro 様

詳しくご解説ありがとうございます。修正頂いたVBAで希望通り、検索後スタイルが変更になりました。 「参考文献 [0-9]{1,}」もだめ、ご指示頂いた高度な検索もだめで、多くのデータをを手動しかないかと諦めておりましたので、大変助かります。

お礼日時:2024/11/28 10:03

No.2の回答者です。



質問にあるマクロで検索結果があるかどうかを確かめる書き方です。
https://www.relief.jp/docs/word-vba-find-if-not- …

Sub B015参考文献スタイル変更()
Dim rng As Range
Dim searchText As String
Dim styleName As String

' 検索するラベルのテキスト
searchText = "参考文献[0-9]{1,}"

' 適用するスタイル名
styleName = "マ_連番"

' ドキュメント全体を範囲に設定
Set rng = ActiveDocument.Content

' ワイルドカードを使用して検索とスタイル適用
With rng.Find
.ClearFormatting
.Text = searchText ' 数字が続くラベルを検索
.MatchWildcards = True
.Format = True

' 検索対象があれば
If .Execute Then

Do While .Found = True
' スタイルを適用
rng.Style = ActiveDocument.Styles(styleName)
rng.Collapse wdCollapseEnd
.Execute
Loop
MsgBox "ラベル「" & searchText & "」にスタイル「" & styleName & "」が適用されました。"

' 検索対象がない場合
Else
MsgBox "検索対象が見つかりませんでした"

End If

End With

End Sub
    • good
    • 0
この回答へのお礼

ご丁寧に追加情報ありがとうございます。今後の参考にさせてもらいます。実際には参考文献+SEQ+情報元の文字列の1行表示なっておりますが、「searchText = "参考文献 ^d SEQ"」で1行すべてにスタイルが適用され元に戻りました。深謝です。

お礼日時:2024/11/28 10:55

こんばんは



WordのVBAはほとんど存じませんので、よくわかってませんけれど・・・

>1つのファイルに1種類の図表番号が約2,000ほどあり~~
通常の「図表番号の挿入」で入れている図表番号のことですよね。
その場合、番号はテキストボックスになっていて、本文ではないと思います。
ですので、「ActiveDocument.Content」から検索してもヒットしないのではないでしょうか?

もしそうなら、テキストボックスから検索するか、画像等に紐づけられたCaptionから検索するなどの方法になりそうな気がしますけれど・・
    • good
    • 0
この回答へのお礼

ご返信ありがとうございます。検索ボックスでワイルドカード検索してみましたが、参考文献[0-9]{1,}は出てきませんでした。私もみようみまねでVBAをしている高齢者で、数多くの処理を手動でするのを避けないと思っていますが、手動になるかもしれませんね。早速のご連絡に深謝です。

お礼日時:2024/11/28 09:06

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

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


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