1

MSWord ファイル内の特定の種類のテキスト文字列を見つけて (黄色で) 強調表示する MSWord マクロを作成しようとしています。

例えば:

1) イタリック体のカンマ、空白、イタリック体以外のテキスト。たとえば、次のようになります。

この文の2 番目のコンマ (イタリック体)は、目的のマクロで強調表示する必要があります。ただし、文全体がイタリック体であるため、この文のカンマは強調表示しないでください。



2) 太字の文字 (あらゆる種類、空白も含む) の前後に太字以外の文字が続く。たとえば、次のようになります。

この文は太字の句読点で終わります。その最初の期間を強調する必要があります。

最初の期間は正常に見えるかもしれませんが、そうではありません。大胆です。


3) SmallCaps であり、4 文字を超える長さで、大文字ではない単語。マークダウンで小文字を使用する方法がわかりません...しかし、MSWord で次のテキストが小文字になっていると想像してみてください。

これがすべてスモールキャップスであると想像してください。. . 「under」という単語は 4 文字を超える長さですが、大文字ではないため、強調表示する必要があります



これが可能かどうか知っている人はいますか?正規表現を使用してテキスト パターンを見つけるのは非常に簡単ですが、それらのパターンに書式設定の変更を追加するのは難しいようです。

4

1 に答える 1

0

コマンドを実行し、

cscript //Nologo regexp02.vbs 

regexp02.vbs:

Dim objRegExp    : Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True

Dim input 
input="Imagine All of This Is in Small Caps. . . the Word under Should Be Highlighted Because It Is More Than Four Characters Long but is not Capitalized"

WScript.Echo input

WScript.Echo 

Dim Pattern1 : Pattern1 = "\b[a-z]{5,}\s"
WScript.Echo "Pattern1 : " & Pattern1
WScript.Echo 

objRegExp.Pattern = Pattern1

Set objMatches = objRegExp.Execute(input)

For i=0 To objMatches.Count-1
Set objMatch = objMatches.Item(i)
WScript.Echo objMatch.Value
Next

WScript.Echo 

Dim Pattern2 : Pattern2 = "\b[A-Z]([a-z]{4,})\s"
WScript.Echo "Pattern2 : " & Pattern2
WScript.Echo 

objRegExp.Pattern = Pattern2

Set objMatches = objRegExp.Execute(input)

For i=0 To objMatches.Count-1
    Set objMatch = objMatches.Item(i)
    WScript.Echo objMatch.Value

    WScript.Echo Left(objMatch.Value, 1)

'TODO test bold sumbol Left(objMatch.Value, 1)
'
'   TODO Highlight Code
'

Next

出力:

Imagine All of This Is in Small Caps. . . the Word under Should Be Highlighted Because It Is More Than Four Characters Long but is not Capitalized

Pattern1 : \b[a-z]{5,}\s

under

Pattern2 : \b[A-Z]([a-z]{4,})\s

Imagine
I
Small
S
Should
S
Highlighted
H
Because
B
Characters
C

VBA での正規表現:

リファレンスを開く

リファレンスを開く

COM サーバー Microsoft VBScript 正規表現 5.5 を選択します。

COMサーバーを選択

VBA コード:

Dim objRegExp As New VBScript_RegExp_55.RegExp

objRegExp.IgnoreCase = False
objRegExp.Global = True 

objRegExp.Pattern = Pattern1

マクロの記録

マクロの記録

Ctrl+F を押して、検索ダイアログを開く

検索ダイアログを開く

フォント プロパティを選択

フォント プロパティを選択

フォントスタイルを選択

フォントスタイルを選択

[次を検索] を押します

[次を検索] を押します

マクロの記録を停止し、VBA エディターを開く

マクロの記録を停止し、VBA エディターを開く

マクロの編集

マクロの編集

マクロを実行する SearchItalic

マクロを実行する SearchItalic

斜体のテキストを検索:

Sub SearchItalic()

Selection.Find.ClearFormatting
Selection.Find.Font.Italic = True
With Selection.Find
    .Text = ""
    .Forward = True
    .Wrap = wdFindContinue
End With
Selection.Find.Execute
End Sub
于 2013-02-07T19:35:04.683 に答える