Word VBA ワード文書の語群をExcelの辞書を使って置換

ホームページのトップに戻る目次

Word VBA 目次

スタイル一覧を出力
 ・Selection オブジェクトを使用する
 ・Range オブジェクトを使用する
文書中のフォント名と色の一覧を出力
ワード文書の書式設定
 ・VBA の起動ボタンを設置する方法
 ・Selection、Range で選択する方法
 ・表を使用する
ワード文書の語群をExcelの辞書を使って置換
 ・参照設定
 ・文字列の検索、置換、および書式設定
 ・Word の組み込みのダイアログ ボックスを表示する
 ・コレクションからオブジェクトを取得する
テキスト・ファイルの文字コード変換

索引
 

ワード文書の語群をExcelの辞書を使って置換

ここでは、ワードの文書を、Excelの置換辞書を使って、語群変換する事例を紹介します。

このコードは、水野麻子さんが、下記サイトで公開されているコードを使わせていただきました。
 外国語と文書作成&翻訳の情報源
 【Word】訳語の一括置換・自動入力
http://ameblo.jp/saglasie/entry-10562628443.html
 また、ワイルドカードの使い方も、水野麻子さんの労作、「Wordワイルドカード徹底活用ガイド」を参照させていただきました。
http://docs.google.com/fileview?id=0BxWizratvzI9M2NlNjRjNjAtNDlmOS00NzRjLWFhNTUtNjI3YWU3MWFiYzZj&hl=ja

マクロのコード一覧
http://ameblo.jp/saglasie/entry-10474808011.html

このマクロと、テストデータをダウンロードできます。→ReplaceWordsOfaDocument06.zip

VBA05 から、フォント色を指定して、置換対象を絞り込めるようにしました。


同様の考えで、Excelブックの内容を置換するマクロは、Excel関数の VLOOKUP をマクロで(セル置換)を参照下さい。


 このサイトの VBA コードは、クリエイティブ・コモンズライセンス・パターンの内、
表示-非営利-継承 表示-非営利-継承 Attribution-NonCommercial-ShareAlike」に準拠して、公開します。
「表示-非営利-継承」の条件では、無断で複製、改変、転載できます。連絡や承諾の必要はありません。


'01:2012/06/16 作成:渡辺真
'03:2012/06/28 表のセルの不要な文字を削除する方法を変更
'04:2012/06/29 ファイルを開くダイアログのパスを、この文書のパスに設定
'05:2016/11/01 フォント色による置換対象の絞込み機能を追加
'06:2016/11/04 フォント色指定を、WdColor から ColorIndex に変更

Option Explicit
Option Base 1

Public コピー元ブック名 As String
Public コピー元シート名 As String
Public コピー元参照キー列番号 As Integer
Public コピー対象列番号 As Integer
Public ワイルドカード列番号 As Integer
Public コピー元キー開始行 As Integer
Public コピー元キー開始行文字 As String

Sub Excelの辞書を使って置換()

   Dim キー列名 As String
   Dim コピー対象列名 As String
   Dim ワイルドカード列名 As String
   Dim 現在のパス As String
   Dim Excelアプリ As Object          'Excel.Application アプリ
   Dim 開始日時 As Variant
   Dim 終了日時 As Variant
   Dim 最終行 As Integer
   Dim マスタ件数 As Integer
   Dim 行 As Integer
   Dim データ() As String
   Dim 置換対象文書名 As String
   Dim 指定フォント色 As Integer 'WdColorIndex
   Dim 文字列 As String
   
   
'   参照関係の読み込み
   ThisDocument.Activate
   現在のパス = ActiveDocument.Path
   ChDrive 現在のパス
   ChDir 現在のパス

   '★コピー元★
    
   コピー元ブック名 = ActiveDocument.Tables(1).Cell(2, 1).Range.Text
   Debug.Print コピー元ブック名
   Debug.Print InStr(コピー元ブック名, vbCr)
   Debug.Print Len(コピー元ブック名)
   'なぜか余計な2文字(0x0d(CR),0x07(BEL))が後ろに付くので、除去する。
   コピー元ブック名 = Left(コピー元ブック名, InStr(コピー元ブック名, vbCr) - 1)
   '★★↑Excelを参照設定しておかないと、予約語Leftが使えない!★★
   Debug.Print コピー元ブック名
'Stop
   コピー元シート名 = ActiveDocument.Tables(1).Cell(2, 2).Range.Text
   コピー元シート名 = Left(コピー元シート名, InStr(コピー元シート名, vbCr) - 1)

   キー列名 = ActiveDocument.Tables(1).Cell(2, 3).Range.Text
   キー列名 = Left(キー列名, InStr(キー列名, vbCr) - 1)

   If キー列名 <> "" Then
       コピー元参照キー列番号 = 列番号(キー列名)
   Else
       MsgBox "コピー元参照キー列番号が、未登録です。"
       End
   End If
   
   コピー対象列名 = ActiveDocument.Tables(1).Cell(2, 4).Range.Text
   Debug.Print コピー対象列名
   コピー対象列名 = Left(コピー対象列名, InStr(コピー対象列名, vbCr) - 1)

   ワイルドカード列名 = ActiveDocument.Tables(1).Cell(2, 5).Range.Text
   Debug.Print ワイルドカード列名
   ワイルドカード列名 = Left(ワイルドカード列名, InStr(ワイルドカード列名, vbCr) - 1)
   
   コピー元キー開始行文字 = ActiveDocument.Tables(1).Cell(2, 6).Range.Text
   Debug.Print コピー元キー開始行文字
   コピー元キー開始行 = Val(Left(コピー元キー開始行文字, InStr(コピー元キー開始行文字, vbCr) - 1))
   
   文字列 = ActiveDocument.Tables(1).Cell(2, 7).Range.Text
   Debug.Print 文字列
   文字列 = 半角(Left(文字列, InStr(文字列, vbCr) - 1))
   If Len(文字列) = 0 Then
      指定フォント色 = 999
   Else
      指定フォント色 = Val(文字列)
   End If
      
   コピー対象列番号 = 列番号(コピー対象列名)
   ワイルドカード列番号 = 列番号(ワイルドカード列名)
   
   MsgBox "置換対象のワード文書を指定して下さい。"
   ChangeFileOpenDirectory ThisDocument.Path
   With Dialogs(wdDialogFileOpen)
      .Name = "*.doc*"
      If .Show = -1 Then
         置換対象文書名 = .Name 'パス無しの文書ファイル名
      End If
   End With
   
   If 置換対象文書名 = ThisDocument.Name Then
      MsgBox "選択した文書は、このファイル自身です。" & vbNewLine _
      & "置換対象のファイルを選択して下さい。"
      Exit Sub
   End If

   開始日時 = Now                ' 開始時刻を変数に格納します。
   
   'Excelファイルを開きシート内のリスト全てコピー
   Set Excelアプリ = CreateObject("Excel.Application")
   Excelアプリ.Visible = True
   
   With Excelアプリ
      .Workbooks.Open (現在のパス & "\" & コピー元ブック名)
      .Workbooks(コピー元ブック名).Worksheets(コピー元シート名).Activate
   End With
   DoEvents
'Stop

   With Excelアプリ
      'マスタデータを配列に読み込む
      'マスタ側のブック名とマスタ側のテーブル名

      最終行 = .Cells(.ActiveSheet.Rows.Count, コピー元参照キー列番号).End(xlUp).Row
      '★★↑Excelを参照設定しておかないと、予約語xlUpが使えない!★★

      マスタ件数 = 最終行 - コピー元キー開始行 + 1
      
      ReDim データ(マスタ件数, 4)
      
      For 行 = コピー元キー開始行 To 最終行
         If .Cells(行, コピー対象列番号).Value <> "" Then '登録データ ★★★
             データ(行 - コピー元キー開始行 + 1, 1) _
             = .Cells(行, コピー元参照キー列番号).Value   'ID 参照キー★★★
             データ(行 - コピー元キー開始行 + 1, 2) _
             = .Cells(行, コピー対象列番号).Value         '置換後登録データ ★★★
             データ(行 - コピー元キー開始行 + 1, 3) _
             = .Cells(行, ワイルドカード列番号).Value     'ワイルドカード登録データ ★★★
         End If
      Next 行
   
   End With

   'Excel終了処理
   With Excelアプリ
      '保存しないで閉じる
      .Workbooks(コピー元ブック名).Close SaveChanges:=False
      .Quit
   End With
   
   Set Excelアプリ = Nothing
   DoEvents
    
   Documents(置換対象文書名).Activate
   
   For 行 = 1 To マスタ件数
      If Len(データ(行, 2)) > 0 Then   '置換先の文字列が空白だと、文書が消えるから
         If 指定フォント色 > 16 Then
         Else
            Selection.Find.Font.ColorIndex = 指定フォント色
         End If
         With Selection.Find
'               .ClearFormatting
            .Text = データ(行, 1)           '辞書のキーの文字列を
            .Forward = True
            .Wrap = wdFindContinue
            
            If 指定フォント色 > 16 Then   'フォント色指定無し
               .Format = False
            Else
               .Format = True                '★★コレがミソ★★フォント色指定
               'True を設定すると、検索文字列と書式または書式のみの検索が行われます。
            End If
            .MatchCase = False
            .MatchByte = False

'            .MatchPhrase = False        'この行は不要。有ると Word 2003以前で動かない。

            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .MatchFuzzy = False
            
            If Len(データ(行, 3)) > 0 Then
               .MatchWildcards = True        'ワイルドカードを使う
            Else
               .MatchWildcards = False       'ワイルドカードを使わない
            End If
            
'               .Replacement.ClearFormatting
            .Replacement.Text = データ(行, 2) '辞書の置換対象の文字列に
'               .Font.Hidden = False

         End With
   
         Selection.Find.Execute Replace:=wdReplaceAll  '全て置換実行
'            Stop
      End If
   Next 行


   終了日時 = Now
   MsgBox "処理を終了しました。" & vbNewLine & "処理時間は、" _
   & Format(終了日時 - 開始日時, "hh時間nn分ss秒") & " でした。"
   
End Sub

解説:
ColorIndex と WdColor 列挙型
https://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.word.wdcolor(v=office.11).aspx
https://msdn.microsoft.com/ja-jp/library/office/ff196272.aspx

 ワード文書に含まれるフォント色の ColorIndex は、下記のマクロを使って一覧できます。
文書中のフォント名と色の一覧を出力

名前 ColorIndexWdColor 列挙型説明
wdAuto 0wdColorAutomatic自動設定。通常の既定値は黒です。 -16777216
wdBlack 1wdColorBlack0
wdBlue 2wdColorBlue16711680
wdTurquoise 3wdColorTurquoise水色 16776960
wdBrightGreen 4wdColorBrightGreen明るい緑 65280
wdPink 5wdColorPinkピンク 16711935
wdRed 6wdColorRed255
wdYellow 7wdColorYellow65535
wdWhite 8wdColorWhite16777215
wdDarkBlue 9wdColorDarkBlue濃い青 8388608
wdTeal 10wdColorTeal青緑 8421376
wdGreen 11wdColorGreen32768
wdViolet 12wdColorViolet8388736
wdDarkRed 13wdColorDarkRed濃い赤 128
wdDarkYellow 14wdColorDarkYellow濃い黄 32896
wdGray50 15wdColorGray50網かけ 50 の灰色 8421504
wdGray25 16wdColorGray25網かけ 25 の灰色 12632256


Find.Execute メソッド (Word)
https://msdn.microsoft.com/ja-jp/library/office/ff193977.aspx
指定された検索を実行します。検索が正しく実行できた場合、True を返します。ブール型 (Boolean) の値を使用します。

構文
.Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl)
必ず指定します。Find オブジェクトを表す変数を指定します。

パラメーター
名前必須 /
オプション
データ型説明
FindText省略可能バリアント型 (Variant)検索する文字列を指定します。
書式だけを検索する場合は、空文字列 ("") を指定します。
適切な文字コードを指定すると、特殊文字を検索できます。
たとえば、"^p" は段落記号に対応し、"^t" はタブ文字に対応しています。
MatchCase省略可能バリアント型 (Variant)True を設定すると、検索文字列の大文字と小文字が区別されます。
[検索と置換] ダイアログ ボックス ([編集] メニュー) の [大文字と小文字を区別する] チェック ボックスに対応しています。
MatchWholeWord省略可能バリアント型 (Variant)単語全体を検索対象とし、長い単語の一部は対象としないようにする場合は、True を設定します。
[検索と置換] ダイアログ ボックスの [完全に一致する単語だけを検索する] チェック ボックスに対応しています。
MatchWildcards省略可能バリアント型 (Variant)検索文字列として特殊な検索演算子を指定する場合は、True を設定します。
[検索と置換] ダイアログ ボックスの [ワイルドカードを使用する] チェック ボックスに対応しています。
MatchSoundsLike省略可能バリアント型 (Variant)検索文字列と類似した単語を検索する場合、True を設定します。
[検索と置換] ダイアログ ボックスの [あいまい検索 (英)] チェック ボックスに対応しています。
MatchAllWordForms省略可能バリアント型 (Variant)True を設定すると、英単語の他の活用形も検索されます。
たとえば、"sit" の場合は "sitting" や "sat" も検索されます。
[検索と置換] ダイアログ ボックスの [英単語の異なる活用形も検索する] チェック ボックスに対応しています。
Forward省略可能バリアント型 (Variant)True を設定すると、下方向に検索されます。
Wrap省略可能バリアント型 (Variant)文書の先頭以外の場所から検索を開始して、文書の末尾まで検索された後に行う処理を指定します。
引数 Forward に False を設定した場合は、文書の先頭まで検索された後の処理を指定します。
この引数には、選択範囲または指定範囲内での検索で、検索文字列が見つからない場合の処理を指定することもできます。
いずれかの WdFindWrap クラスの定数を指定できます。
Format省略可能バリアント型 (Variant)True を設定すると、検索文字列と書式または書式のみの検索が行われます。
ReplaceWith省略可能バリアント型 (Variant)置換文字列を指定します。
引数 Find によって指定された文字列を削除するには、空文字列 ("") を使用します。引数 Find と同じように、特殊文字や高度な検索条件を指定できます。
グラフィック オブジェクトまたはその他の文字列以外の項目を置換文字列として指定するには、クリップボードにコピーし、引数 ReplaceWith に "^c" を指定します。
Replace省略可能バリアント型 (Variant)置換文字列を置換する個数 (1 つだけ、すべて、または置換しない) を指定します。
WdReplace クラスの定数を使用します。
MatchKashida省略可能バリアント型 (Variant)True を設定すると、アラビア言語の文書内で kashida と一致する文字列の検索が行われます。
この引数は、選択またはインストールされている言語の設定 (たとえば、日本語) によっては使用できない場合があります。
MatchDiacritics省略可能バリアント型 (Variant)True を設定すると、右から左へ記述された言語の文書内で diacritics と一致する文字列の検索が行われます。
この引数は、選択またはインストールされている言語の設定 (たとえば、日本語) によっては使用できない場合があります。
MatchAlefHamza省略可能バリアント型 (Variant)True を設定すると、アラビア言語の文書内で alef hamzas に一致する文字列の検索が行われます。
この引数は、選択またはインストールされている言語の設定 (たとえば、日本語) によっては使用できない場合があります。
MatchControl省略可能バリアント型 (Variant)True を設定すると、右から左へ記述された言語の文書内で文字列の方向を制御する文字の検索が行われます。
この引数は、選択またはインストールされている言語の設定 (たとえば、日本語) によっては使用できない場合があります。
MatchPrefix省略可能バリアント型 (Variant)True を設定すると、検索文字列で始まる単語が検出されます。
[検索と置換] ダイアログ ボックスの [接頭辞に一致する] チェック ボックスに対応しています。
MatchSuffix省略可能バリアント型 (Variant)True を設定すると、検索文字列で終わる単語が検出されます。
[検索と置換] ダイアログ ボックスの [接尾辞に一致する] チェック ボックスに対応しています。
MatchPhrase省略可能バリアント型 (Variant)True を設定すると、単語間のすべての空白文字および制御文字が無視されます。
IgnoreSpace省略可能バリアント型 (Variant)True を設定すると、単語間のすべての空白が無視されます。
[検索と置換] ダイアログ ボックスの [空白文字を無視する] チェック ボックスに対応しています。
IgnorePunct省略可能バリアント型 (Variant)True を設定すると、単語間のすべての区切り記号が無視されます。
[検索と置換] ダイアログ ボックスの [句読点を無視する] チェック ボックスに対応しています。

戻り値
ブール型 (Boolean)

説明
MatchWildcardsTrue に設定されている場合、引数 FindText にワイルドカード文字やその他の高度な検索条件を指定できます。
たとえば、"*(ing)" を指定すると、最後が "ing" で終わる単語がすべて検索されます。

記号を検索する場合、キャレット (^) とゼロ (0) を入力し、記号の文字コードを入力します。たとえば、"^0151" は全角ダッシュ (?) に対応します。

他の方法で指定しない限り、置換文字列は置換前の文字列の書式を文書内で継承します。たとえば、文字列 "abc" を "xyz" に置換する場合、文字列 "abc" に太字の書式が設定されていると、文字列 "xyz" にも太字の書式が設定されて置換されます。

また、引数 MatchCaseFalse を設定した場合、元の検索文字列が大文字であると、置換後の文字列の大文字小文字に関係なく、大文字の文字列に置換されます。前の例の場合、文字列 "ABC" は "XYZ" に置換されます。

この種類の目次に戻る↑ 索引へ↓ トップページに戻る


参照設定

Excelを参照設定 Word VBA の中で、Excel VBA の定数を使うためには、右のように、ツール・メニューで、参照設定を追加します。

コンパイル エラー
上記でダウンロードしたマクロを実行して、「コンパイル エラー」が表示されたら、お使いの Excel とバージョンが違うことが考えられます。

「参照不可」の部分のチェックを一旦外します。そして、リストをスクロールして、表示される参照可能のバージョンの Excel に、チェックを入れなおして下さい。
「参照不可」の部分のチェックを外す 表示されるバージョンの Excel にチェックを入れる
この種類の目次に戻る↑ 索引へ↓ トップページに戻る


文字列の検索、置換、および書式設定

 検索および置換は、Find および Replacement オブジェクトを使用して行います。
Find オブジェクトを使用するには、まず Selection または Range オブジェクトを指定する必要があります。
ただし、Find オブジェクトに Selection オブジェクトからアクセスした場合と、Range オブジェクトからアクセスした場合では、検索の動作が少し異なります。

文字列を検索し、選択する

 Find オブジェクトに Selection オブジェクトからアクセスした場合、検索条件に一致する文字列が検出されると、選択範囲が変更されます。

次の使用例は、"Hello" という文字列が次に使用されている箇所を選択します。
"Hello" という文字列が検出される前に文書の末尾に達した場合、検索の処理は中止されます。
With Selection.Find
    .Forward = True
    .Wrap = wdFindStop
    .Text = "Hello"
    .Execute
End With

 Find オブジェクトには、[検索と置換] ダイアログ ボックス ([編集] - [検索]) のオプションに関連するプロパティが用意されています。
Find オブジェクトのプロパティは個別に設定することも、次の使用例に示すように、Execute メソッドの引数として使用することもできます。
Selection.Find.Execute FindText:="Hello", _
    Forward:=True, Wrap:=wdFindStop

選択範囲を変更せずに文字列を検索する

 Find オブジェクトを Range オブジェクトからアクセスした場合、検索条件に一致する文字列が検出されると、選択範囲は変わらずに Range オブジェクトが再定義されます。

次の使用例は、作業中の文書の中で、"blue" という文字列が最初に使用されている箇所を検索します。
検索の処理が正常に終了すると、指定範囲が再定義され、"blue" という文字列に太字が設定されます。
With ActiveDocument.Content.Find
    .Text = "blue"
    .Forward = True
    .Execute
    If .Found = True Then .Parent.Bold = True
End With

 次の使用例は、Execute メソッドの引数を使用して前の使用例と同じ処理を行います。
Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:="blue", Forward:=True
If myRange.Find.Found = True Then myRange.Bold = True

Replacement オブジェクトの使い方

 Replacement オブジェクトは、検索または置換の置換後の文字列を表します。Replacement オブジェクトのプロパティおよびメソッドは、[検索と置換] ダイアログ ボックス ([編集] メニュー) のオプションに対応します。
 Replacement オブジェクトは、Find オブジェクトからアクセスします。

次の使用例は、"前略" という文字列をすべて "拝啓" に置換します。
Selection オブジェクトから Find オブジェクトにアクセスするので、検索文字列が検出されると、選択範囲が変更されます。
With Selection.Find
    .ClearFormatting
    .Text = "前略"
    .Replacement.ClearFormatting
    .Replacement.Text = "拝啓"
    .Execute Replace:=wdReplaceAll, Forward:=True, _
        Wrap:=wdFindContinue
End With

 次の使用例は、作業中の文書内の太字の書式を削除します。
Find オブジェクトの Bold プロパティに True を設定し、Replacement オブジェクトの Bold プロパティに False を設定します。
書式を検索し、置換するには、検索と置換の文字列を長さ 0 の文字列 ("") に設定し、Execute メソッドの引数 FormatTrue に設定します。
Range オブジェクトから Find オブジェクトにアクセスするので、選択範囲は変更されません。
Content プロパティでは Range オブジェクトが取得されます。
With ActiveDocument.Content.Find
    .ClearFormatting
    .Font.Bold = True
    With .Replacement
        .ClearFormatting
        .Font.Bold = False
    End With
    .Execute FindText:="", ReplaceWith:="", _
        Format:=True, Replace:=wdReplaceAll
End With


Find オブジェクト は、検索に使用する条件を表します。
Find オブジェクトのプロパティとメソッドは [検索と置換] ダイアログ ボックスのオプションと対応します。

 Find プロパティを使用して Find オブジェクトを取得します。

次の使用例は、単語 "hi" が次に使用されている箇所を検索し、選択します。
With Selection.Find
    .ClearFormatting
    .Text = "hi"
    .Execute Forward:=True
End With

 次の使用例は、作業中の文書で単語 "hi" が使用されているすべての箇所を検索し、"hello" に置き換えます。
Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:="hi", ReplaceWith:="hello", _
    Replace:=wdReplaceAll

 Selection オブジェクトから Find オブジェクトを取得した場合、検索条件と一致する文字列が見つかると、選択範囲が変更されます。

次の使用例は、単語 "blue" が次に使用されている箇所を検索し、選択します。
Selection.Find.Execute FindText:="blue", Forward:=True

 Range オブジェクトから Find オブジェクトを取得した場合、検索条件と一致する文字列が見つかっても、選択範囲は変更されませんが、Range オブジェクトが再定義されます。

次の使用例は、作業中の文書で単語 "blue" が最初に使用されている箇所を検索します。
文書内で "blue" が見つかった場合、myRange が再定義され、太字の書式が "blue" に適用されます。
Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:="blue", Forward:=True
If myRange.Find.Found = True Then myRange.Bold = True


Selection.Find プロパティ は、検索条件を含む Find オブジェクトを取得します。値の取得のみ可能です。

 構文
 .Find
    Selection オブジェクトを表す変数を指定します。
 備考
 検索操作が正しく実行されると、選択部分が変更されます。

 次の使用例は、単語 "Microsoft" があるかどうか、文書全体を下方向に検索します。
この単語が見つかった場合、単語は自動的に選択されます。
With Selection.Find
    .Forward = True
    .ClearFormatting
    .MatchWholeWord = True
    .MatchCase = False
    .Wrap = wdFindContinue
    .Execute FindText:="Microsoft"
End With


Replacement オブジェクト は、検索と置換に使用する条件を表します。Replacement オブジェクトのプロパティとメソッドは [検索と置換] ダイアログ ボックスのオプションと対応します。

 Replacement プロパティを使用して Replacement オブジェクトを取得します。

次の使用例は、次に単語 "hi" が使用されている箇所を単語 "hello" で置き換えます。
With Selection.Find
    .Text = "hi"
    .ClearFormatting
    .Replacement.Text = "hello"
    .Replacement.ClearFormatting
    .Execute Replace:=wdReplaceOne, Forward:=True
End With

 書式を検索置換するには、検索する文字列と置換後の文字列の両方に長さ 0 の文字列 ("") を設定し、Execute メソッドの引数 FormatTrue を設定します。

次の使用例は、作業中の文書のすべての太字の書式を削除します。
この場合、Bold プロパティの値は、Find オブジェクトについては TrueReplacement オブジェクトについては False を設定します。
With ActiveDocument.Content.Find
    .ClearFormatting
    .Font.Bold = True
    .Text = ""
    With .Replacement
        .ClearFormatting
        .Font.Bold = False
        .Text = ""
    End With
    .Execute Format:=True, Replace:=wdReplaceAll
End With


Replacement プロパティ は、置換操作の条件を含む Replacement オブジェクトを取得します。
 expression.Replacement
 expression   必ず指定します。Find オブジェクトを表すオブジェクト式を指定します。

 次の使用例は、作業中の文書から太字の書式を削除します。
Bold プロパティの値は、Find オブジェクトでは TrueReplacement オブジェクトでは False です。
With ActiveDocument.Content.Find
    .ClearFormatting
    .Font.Bold = True
    With .Replacement
        .ClearFormatting
        .Font.Bold = False
    End With
    .Execute FindText:="", ReplaceWith:="", Format:=True, _
        Replace:=wdReplaceAll
End With

 次の使用例は、作業中の文書で単語 "Start" をすべて検索し、"End" に置き換えます。
検索では、書式は無視し、大文字と小文字を区別して検索文字列 ("Start") と一致する文字列を検索します。
Set myRange = ActiveDocument.Range(Start:=0, End:=0)
With myRange.Find
    .ClearFormatting
    .Text = "Start"
    With .Replacement
        .ClearFormatting
        .Text = "End"
    End With
    .Execute Replace:=wdReplaceAll, _
        Format:=True, MatchCase:=True, _
        MatchWholeWord:=True
End With


Bold プロパティ は、True を設定すると、選択範囲の文字に太字の書式が設定されます。
取得できる値は、TrueFalse、定数 wdUndefined (TrueFalse の両方) のいずれかです。
設定できる値は、TrueFalse、定数 wdToggle のいずれかです。値の取得および設定が可能です。長整数型 (Long) の値を使用します。

 次の使用例は、新しい文書の 6 番目の単語の書式を太字に設定します。
Set newDoc = Documents.Add
Set myRange = newDoc.Content
myRange.InsertAfter "これは太字にするテストです。"
myRange.Words(6).Bold = True

 次の使用例は、選択範囲の一部の書式が太字に設定されている場合、選択範囲全体の書式を太字に設定します。
If Selection.Type = wdSelectionNormal Then
    If Selection.Font.Bold = wdUndefined Then _
        Selection.Font.Bold = True
Else
    MsgBox "文字列を選択してください。"
End If

 次の使用例は、選択した文字列の書式の太字と標準を切り替えます。
If Selection.Type = wdSelectionNormal Then
    Selection.Range.Bold = wdToggle
End If

 次の使用例は、作業中の文書で最初の段落の書式を太字に設定します。
ActiveDocument.Paragraphs(1).Range.Bold = True


MatchByte プロパティ は、True を設定すると、検索時にアルファベットまたはカタカナの全角文字と半角文字が区別されます。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。

次の使用例は、文字の全角と半角を区別せずに指定範囲内で "マイクロソフト" という語を検索します。

With Selection.Find
    .ClearFormatting
    .MatchWholeWord = True
    .MatchByte = False
    .Execute FindText:="マイクロソフト"
End With


MatchWildcards プロパティ は、検索する文字列にワイルドカードが含まれている場合、このプロパティの値は True です。
これは、[検索と置換] ダイアログ ボックス ([編集] メニュー) の [ワイルドカードを使用する] チェック ボックスに対応します。
値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
 expression.MatchWildcards
 expression   必ず指定します。Find オブジェクトを表すオブジェクト式を指定します。

 文書内で検索する文字列を指定するには、Find オブジェクトの Text プロパティまたは Execute メソッドの引数 FindText を使用します。

注:
MatchPhrase、MatchWildcards、 MatchSoundsLike、MatchAllWordForms、MatchFuzzy パラメーターは、同時に True に設定することはできません。
明示的に False の指定をして、かつ False の行を True の行の前に置かないと、実行時エラー '6182' となります。
MatchPhrase 単語間のすべての空白文字および制御文字が無視されます。
MatchWildcards True に設定すると、検索する文字列をワイルドカードを含む文字列と解釈します。
MatchSoundsLike True に設定すると、検索文字列に類似した単語が検索対象となります。
MatchAllWordForms True に設定すると、検索文字列のすべての活用形が検索対象となります。
MatchFuzzy True に設定すると、検索時に日本語の文字列のあいまい検索オプションが使用されます。

注意:MS-Word のワイルドカードは、正規表現と微妙に違う点があります。

正規表現ワイルドカード
行頭、否定^!
一文字.?
0以上の文字.**
単語の先頭
<
単語の末尾
>

 次の使用例は、"s" で始まり "t" で終わる 3 文字の単語を検索し、検索した単語を選択します。
With Selection.Find
    .ClearFormatting
    .Text = "s?t"
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchFuzzy = False
    .MatchWildcards = True
    .Execute Format:=False, Forward:=True
End With

この種類の目次に戻る↑ 索引へ↓ トップページに戻る


Word の組み込みのダイアログ ボックスを表示する

注:FileDialog プロパティとの違いを確認して、使い分けて下さい。

組み込みのダイアログ ボックスを表示する

 組み込みのダイアログ ボックスを表示して、ユーザーが入力した値や、Visual Basic で Word の動作を制御するための情報を取得することができます。
Dialog オブジェクトの Show メソッドは、Word の組み込みダイアログ ボックスに指定されている処理の内容を表示し、これを実行します。
特定の組み込みダイアログ ボックスにアクセスするには、Dialogs プロパティに WdWordDialog クラスの定数を指定します。

たとえば、次のコードを記述すると [ファイルを開く] ダイアログ ボックス (wdDialogFileOpen) を表示できます。
Sub ShowOpenDialog()
    Dialogs(wdDialogFileOpen).Show
End Sub

 ファイルを選択し、[OK] をクリックすると、ファイルが開きます (処理が実行されます)。

参考:Word コードライブラリアン(ファイル操作)
http://www.beagle-hc.com/It_program/Word4.html

たとえば、次のコードを記述すると、[印刷] ダイアログ ボックス (wdDialogFilePrint) を表示できます。
Sub ShowPrintDialog()
    Dialogs(wdDialogFilePrint).Show
End Sub

 Word ダイアログ ボックスの特定のタブにアクセスするには、DefaultTab プロパティを設定します。

次の使用例は、[線種とページ罫線と網かけの設定] ダイアログ ボックス ([罫線] メニュー) の [ページ罫線] タブを表示します。
Sub ShowBorderDialog()
    With Dialogs(wdDialogFormatBordersAndShading)
        .DefaultTab = wdDialogFormatBordersAndShadingTabPageBorder
        .Show
    End With
End Sub

 Display メソッドは、ダイアログ ボックスを表示するだけで、ダイアログ ボックスに指定されている処理は実行しません。
Display メソッドは、組み込みダイアログ ボックスを使用してユーザーに入力を求め、設定値を取得する場合に使用します。
たとえば、次のコードは、[オプション] ダイアログ ボックス ([ツール] メニュー) の [ユーザー情報] タブを表示し、ユーザー名を取得して表示します。
Sub DisplayUserInfoDialog()
    With Dialogs(wdDialogToolsOptionsUserInfo)
        .Display
        MsgBox .Name
    End With
End Sub

 メモ  Word の Visual Basic for Applications のプロパティを使用しても、ダイアログ ボックスを表示しないで、ユーザー情報を表示することができます。

次の使用例は、Application オブジェクトの UserName プロパティを使用して、[オプション] ダイアログ ボックスの [ユーザー情報] タブを表示しないで、アプリケーションのユーザー名を表示します。
Sub DisplayUserInfo()
    MsgBox Application.UserName
End Sub
 この使用例でユーザー名が変更されても、ダイアログ ボックスの設定値は変更されません。

ダイアログ ボックスを表示しないで、ダイアログ ボックス内の設定値を実行するには、Execute メソッドを使用します。

次の使用例は、[オプション] ダイアログ ボックス の [ユーザー情報] タブを表示し、ユーザー名が指定されている場合は、Execute メソッドを使用してダイアログ ボックスの設定値を設定します。
Sub ShowAndSetUserInfoDialogBox()
    With Dialogs(wdDialogToolsOptionsUserInfo)
        .Display
        If .Name <> "" Then .Execute
    End With
End Sub

 メモ  ダイアログ ボックスを表示しないでユーザー情報を設定するには、Word VBA のプロパティおよびメソッドを使用します。

次の使用例は、Application オブジェクトの UserName プロパティを使用してユーザー名を変更してから、ユーザー名が変更されたことを表す [オプション] ダイアログ ボックスの [ユーザー情報] タブを表示します。
ダイアログ ボックスの値を変更するために、ダイアログ ボックスを表示する必要はありません。
Sub SetUserName()
    Application.UserName = "鈴木 純"
    Dialogs(wdDialogToolsOptionsUserInfo).Display
End Sub

ダイアログ ボックスの設定値を取得または変更する

 ダイアログ ボックスの値をプロパティまたはメソッドを使用して取得したり変更したりできる場合、Dialog オブジェクトを使用して取得または変更する方法は、あまり効率的ではありません。
また、通常 (常にではない)、Dialog オブジェクトにアクセスするより、VBA コードを使用した方がコードが短く簡単です。
したがって、ここには、対応する VBA プロパティを使用して同じ処理を実行する使用例も示します。
  Dialog オブジェクトを使用して、ダイアログ ボックスの設定値を取得または変更する前に、ダイアログ ボックスを個別に識別する必要があります。
これは、Dialogs プロパティに WdWordDialog クラスの定数を指定して行います。
Dialog オブジェクトをインスタンス化すると、ダイアログ ボックスのオプションを取得または設定できるようになります。

次の使用例は、[段落] ダイアログ ボックスに設定されている右インデント値を表示します。
Sub ShowRightIndent()
    Dim dlgParagraph As Dialog
    Set dlgParagraph = Dialogs(wdDialogFormatParagraph)
    MsgBox "右インデント = " & dlgParagraph.RightIndent
End Sub

 メモ  Word VBA のプロパティおよびメソッドを使用して、段落の右インデントの設定値を表示することができます。

次の使用例は、ParagraphFormat オブジェクトの RightIndent プロパティを使用して、カーソル位置に段落の右インデントを表示します。
Sub ShowRightIndexForSelectedParagraph()
    MsgBox Selection.ParagraphFormat.RightIndent
End Sub

 ダイアログ ボックスの設定値を取得するだけでなく、設定することもできます。

次の使用例は、[段落] ダイアログ ボックスの [次の段落と分離しない] チェック ボックスをオンにします。
Sub SetKeepWithNext()
    With Dialogs(wdDialogFormatParagraph)
        .KeepWithNext = 1
        .Execute
    End With
End Sub

 メモ  Word VBA のプロパティおよびメソッドを使用して、段落の右インデント値を変更することもできます。

次の使用例は、ParagraphFormat オブジェクトの KeepWithNext プロパティを使用して、選択された段落が次の段落と分離しないようにします。
Sub SetKeepWithNextForSelectedParagraph()
    Selection.ParagraphFormat.KeepWithNext = True
End Sub

 ダイアログ ボックスに現在の値を反映するには、Update メソッドを使用します。既にマクロで定義してあるダイアログ ボックス変数を使用して、現在の値を取得したり、変更したりする場合、Update メソッドを使用します。

ダイアログ ボックスを閉じた方法を確認する

 Show および Display メソッドの戻り値は、ダイアログ ボックスを閉じるときにクリックされたボタンを表します。

次の使用例は、[改ページ] ダイアログ ボックスを表示し、[OK] がクリックされた場合、ステータス バーにメッセージを表示します。
Sub DialogBoxButtons()
    If Dialogs(wdDialogInsertBreak).Show = -1 Then
        StatusBar = "改ページが挿入されました。"
    End If
End Sub

 次の表は、ダイアログ ボックスのボタンに関連する戻り値を示しています。
戻り値説明
-2[閉じる] ボタン。
-1[OK] ボタン。
0 (ゼロ)[キャンセル] ボタン。
> 0 (ゼロ)コマンド ボタン。1 は 1 番目のボタン、2 は 2 番目のボタンに対応します。


この種類の目次に戻る↑ 索引へ↓ トップページに戻る


Global.ChangeFileOpenDirectory メソッド は、文書を検索するフォルダを設定します。
構文
式.ChangeFileOpenDirectory(Path)
式   Global オブジェクトを表す変数です。省略可能です。
パラメータ
名前必須/オプションデータ型説明
Path必須文字列型 (String)文書を検索するフォルダへのパスを指定します。

指定したフォルダの内容は、次に [ファイルを開く] ダイアログ ボックス ([ファイル] - [開く]) を開いたときに表示されます。
ユーザーが [ファイルを開く] ダイアログ ボックスでフォルダを変更するか、Word の現在のセッションが終了するまで、指定したフォルダから文書が検索されます。
Word のすべてのセッションでの既定の文書用フォルダを変更するには、DefaultFilePath プロパティを使用します。

次の使用例は、文書を検索するフォルダを変更し、"Test.doc" という名前のファイルを開きます。
ChangeFileOpenDirectory "C:\Documents"
Documents.Open FileName:="Test.doc"

次の使用例は、文書を検索するフォルダを変更し、[ファイルを開く] ダイアログ ボックスを表示します。
ChangeFileOpenDirectory "C:\"
Dialogs(wdDialogFileOpen).Show

この種類の目次に戻る↑ 索引へ↓ トップページに戻る


コレクションからオブジェクトを取得する

 コレクションから 1 つのオブジェクトを取得するには、Item メソッドを使用します。

次の使用例は、firstDoc に、Documents コレクション内の 1 番目の文書を表す Document オブジェクトを格納します。
Sub SetFirstDoc()
    Dim docFirst As Document
    Set docFirst = Documents.Item(1)
End Sub

 Item メソッドは、ほとんどのコレクションの既定のメソッド(既定のプロパティ : コントロールに設定して、同じ種類のコントロールを作成すると常に同じ設定値を持つようにできるプロパティ)です。Item キーワードを省略してステートメントをより簡潔にすることができます。
Sub SetFirstDoc()
    Dim docFirst As Document
    Set docFirst = Documents(1)
End Sub

名前付きオブジェクト

 通常は Item メソッドに整数値を指定しますが、名前を指定する方が便利な場合もあります。

次の使用例は、Sales.doc という文書に切り替えます。
Sub ActivateDocument()
    Documents("Sales.doc").Activate
    MsgBox ActiveDocument.Name
End Sub

 次の使用例は、作業中の文書内の先頭のブックマークが付いている文字列を選択します。
Sub SelectBookmark()
    ActiveDocument.Bookmarks(1).Select
    MsgBox Selection.Text
End Sub

 コレクションによっては、インデックスに名前を指定できないものもあります。コレクションの有効なインデックス値を確認するには、コレクション オブジェクトのトピックを参照してください。

定義済みのインデックス値

 コレクションによっては、あらかじめ定義されているインデックス値を使用してオブジェクトを取得することができます。
定義済みのインデックス値は、それぞれ定数で表されます。
たとえば、Borders プロパティに WdBorderType クラスの定数を指定すると、1 つの Border オブジェクトを取得できます。

 次の使用例は、選択範囲の先頭の段落の下に、300 ポイントの罫線を追加します。
Sub AddBorderToFirstParagraphInSelection()
    With Selection.Paragraphs(1).Borders(wdBorderBottom)
        .LineStyle = wdLineStyleSingle
        .LineWidth = wdLineWidth300pt
        .Color = wdColorBlue
    End With
End Sub


Dialogs プロパティ は、Word のすべての組み込みのダイアログ ボックスを表す Dialogs コレクションを取得します。
値の取得のみ可能です。

FileDialog プロパティとの違いを確認して、使い分けて下さい。

 コレクションのメンバーを取得する方法については、「コレクションからオブジェクトを取得する」を参照してください。

 次の使用例は、組み込みの [検索と置換] ダイアログ ボックスを表示し、[検索する文字列] ボックスに "Hello" と表示します。
Dim dlgFind As Dialog

Set dlgFind = Dialogs(wdDialogEditFind)

With dlgFind
    .Find = "Hello"
    .Show
End With

 次の使用例は、すべてのファイルの種類を表示する、組み込みの [ファイルを開く] ダイアログ ボックスを表示します。
With Dialogs(wdDialogFileOpen)
    .Name = "*.*"
    .Show
End With

 次の使用例は、[印刷] ダイアログ ボックスの設定を使用して、作業中の文書を印刷します。
Dialogs(wdDialogFilePrint).Execute


Show メソッド は、指定した Word の組み込みのダイアログ ボックスで行われた操作を表示したり、実行したりします。
ダイアログ ボックスを閉じるときにクリックされたボタンを示す長整数型 (Long) の値を返します。
戻り値説明
-2[閉じる] ボタン。
-1[OK] ボタン。
0 (ゼロ)[キャンセル] ボタン。
> 0 (ゼロ)コマンド ボタン。1 は 1 番目のボタン、2 は 2 番目のボタンに対応します。

 ダイアログ ボックスを表示しても、ダイアログ ボックスを閉じるときに操作が実行されないようにしたり、設定が適用されないようにする場合は、Display メソッドを使用します。
 expression.Show(TimeOut)
 expression   必ず指定します。Dialog オブジェクトを表すオブジェクト式を指定します。

 TimeOut   省略可能です。バリアント型 (Variant) の値を指定します。ダイアログ ボックスを自動的に閉じるまでの時間を指定します。基本となる単位は約 0.001 秒です。システム アクティビティを同時に実行すると、有効時間の値が増えます。この引数を省略した場合、ユーザーがダイアログ ボックスを閉じたときにダイアログ ボックスは閉じます。

 次の使用例は、[検索する文字列] ボックスに "Blue" という語が入力されている [検索と置換] ダイアログ ボックスを表示します。
With  Dialogs(wdDialogEditFind)
    .Find = "Blue"
    .Show
End With

 次の使用例は、[ファイルを開く] ダイアログ ボックスで行われた操作を表示し、実行します。すべてのファイル名を表示できるように、ファイル名に *.* を設定します。
With Dialogs(wdDialogFileOpen)
    .Name = "*.*"
    .Show
End With

 次の使用例は、[ズーム] ダイアログ ボックスで行われた操作を表示し、実行します。約 9 秒間何の操作も開始されない場合、ダイアログ ボックスを閉じます。
Dialogs(wdDialogViewZoom).Show TimeOut:=9000


Display メソッド は、ユーザーが閉じるまで、または指定した時間が経過するまで、指定された組み込みダイアログ ボックスを表示します。
ダイアログ ボックスを閉じるためにクリックされたボタンを示す長整数型 (Long) の値を取得します。
戻り値説明
-2[閉じる] ボタン。
-1[OK] ボタン。
0 (ゼロ)[キャンセル] ボタン。
> 0 (ゼロ)コマンド ボタン。1 は 1 番目のボタン、2 は 2 番目のボタンに対応します。

このメソッドを使ってダイアログ ボックスを表示している間に開始した操作または指定した設定は実行されません。
ダイアログ ボックスを表示し、操作を実行したり、設定を適用したりする場合は、Show メソッドを使用します。
 expression.Display(TimeOut)
 expression   必ず指定します。Dialog オブジェクトを表すオブジェクト式を指定します。

 TimeOut   省略可能です。バリアント型 (Variant) の値を指定します。ダイアログ ボックスが自動的に閉じるまでの時間を指定します。基本の単位は約 0.001 秒です。システム アクティビティを同時に実行すると、有効時間の値が増えます。この引数を省略した場合、ユーザーが閉じたときにダイアログ ボックスは閉じます。

 次の使用例は、[バージョン情報] ダイアログ ボックスを表示します。
Dim dlgAbout As Dialog

Set dlgAbout = Dialogs(wdDialogHelpAbout)
dlgAbout.Display

 次の使用例は、[倍率] ダイアログ ボックスを約 9 秒間表示します。
Dialogs(wdDialogViewZoom).Display TimeOut:=9000


Find オブジェクトの Execute メソッド は、指定された検索を実行します。
検索が正しく実行できた場合、True を返します。ブール型 (Boolean) の値を使用します。

 expression.Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl)

 expression   必ず指定します。Find オブジェクトを表すオブジェクト式を指定します。

 FindText  省略可能です。バリアント型 (Variant) の値を指定します。
検索する文字列を指定します。
書式だけを検索する場合は、空文字列 ("") を指定します。
適切な文字コードを指定すると、特殊文字を検索できます。たとえば、"^p" は段落記号に対応し、"^t" はタブ記号に対応しています。
指定できる特殊文字の一覧については、「文字列やその他の項目を検索して置換する」を参照ください。

 MatchCase  省略可能です。バリアント型 (Variant) の値を指定します。
True を設定すると、検索文字列の大文字と小文字が区別されます。
[検索と置換] ダイアログ ボックス ([編集] メニュー) の [大文字と小文字を区別する] チェック ボックスに対応しています。

 MatchWholeWord  省略可能です。バリアント型 (Variant) の値を指定します。
単語全体を検索対象とし、長い単語の一部は対象としないようにする場合は、True を設定します。
[検索と置換] ダイアログ ボックスの [完全に一致する単語だけを検索する] チェック ボックスに対応しています。

 MatchWildcards  省略可能です。バリアント型 (Variant) の値を指定します。
検索文字列として特殊な検索演算子を指定する場合は、True を設定します。
[検索と置換] ダイアログ ボックスの [ワイルドカードを使用する] チェック ボックスに対応しています。

 MatchSoundsLike  省略可能です。バリアント型 (Variant) の値を指定します。
検索文字列と類似した単語を検索する場合、True を設定します。
[検索と置換] ダイアログ ボックスの [あいまい検索 (英)] チェック ボックスに対応しています。

 MatchAllWordForms  省略可能です。バリアント型 (Variant) の値を指定します。
True を設定すると、英単語の他の活用形も検索されます。たとえば、"sit" の場合は "sitting" や "sat" も検索されます。
[検索と置換] ダイアログ ボックスの [英単語の異なる活用形も検索する] チェック ボックスに対応しています。

 Forward  省略可能です。バリアント型 (Variant) の値を指定します。True を設定すると、下方向に検索されます。

 Wrap   省略可能です。バリアント型 (Variant) の値を指定します。
文書の先頭以外の場所から検索を開始して、文書の末尾まで検索された後に行う処理を指定します。
引数 ForwardFalse を設定した場合は、文書の先頭まで検索された後の処理を指定します。
この引数には、選択範囲または指定範囲内での検索で、検索文字列が見つからない場合の処理を指定することもできます。
使用できる定数は、次に示す WdFindWrap クラスの定数のいずれかです。
wdFindAsk選択範囲または指定範囲を検索し、文書の残りの部分も検索するかどうかをたずねるメッセージを表示します。
wdFindContinue検索範囲の先頭または末尾まで検索し、さらに検索を続けます。
wdFindStop検索範囲の先頭または末尾まで検索したら、検索を終了します。

 Format  省略可能です。バリアント型 (Variant) の値を指定します。
True を設定すると、検索文字列と書式または書式のみの検索が行われます。

 ReplaceWith  省略可能です。バリアント型 (Variant) の値を指定します。
置換文字列を指定します。
引数 Find によって指定された文字列を削除するには、空文字列 ("") を使用します。
引数 Find と同じように、特殊文字や高度な検索条件を指定できます。
グラフィック オブジェクトまたはその他の文字列以外の項目を置換文字列として指定するには、クリップボードにコピーし、引数 ReplaceWith に "^c" を指定します。

 Replace  省略可能です。バリアント型 (Variant) の値を指定します。
置換文字列を置換する個数 (1 つだけ、すべて、または置換しない) を指定します。
使用できる定数は、次に示す WdReplace クラスの定数のいずれかです。
wdReplaceAllすべて置換する
wdReplaceNone置換しない
wdReplaceOne1 つだけ置換する

 MatchKashida  省略可能です。バリアント型 (Variant) の値を指定します。
True を設定すると、アラビア言語の文書内で kashida と一致する文字列の検索が行われます。
この引数は、選択またはインストールされている言語の設定 (たとえば、日本語) によっては使用できない場合があります。

 MatchDiacritics  省略可能です。バリアント型 (Variant) の値を指定します。
True を設定すると、右から左へ記述された言語の文書内で diacritics と一致する文字列の検索が行われます。
この引数は、選択またはインストールされている言語の設定 (たとえば、日本語) によっては使用できない場合があります。

 MatchAlefHamza  省略可能です。バリアント型 (Variant) の値を指定します。
True を設定すると、アラビア言語の文書内で Alef Hamza に一致する文字列の検索が行われます。
この引数は、選択またはインストールされている言語の設定 (たとえば、日本語) によっては使用できない場合があります。

 MatchControl  省略可能です。バリアント型 (Variant) の値を指定します。
True を設定すると、右から左へ記述された言語の文書内で文字列の方向を制御する文字の検索が行われます。
この引数は、選択またはインストールされている言語の設定 (たとえば、日本語) によっては使用できない場合があります。

 MatchWildcardsTrue に設定されている場合、引数 FindText にワイルドカード文字やその他の高度な検索条件を指定できます。

たとえば、"*(ing)" を指定すると、最後が "ing" で終わる単語がすべて検索されます。
 記号を検索する場合、キャレット (^) とゼロ (0) を入力し、記号の文字コードを入力します。
たとえば、"^0151" は全角ダッシュ (−) に対応します。
 他の方法で指定しない限り、置換文字列は置換前の文字列の書式を文書内で受け継ぎます。
たとえば、文字列 "abc" を "xyz" に置換する場合、文字列 "abc" に太字の書式が設定されていると、文字列 "xyz" にも太字の書式が設定されて置換されます。
 また、引数 MatchCaseFalse を設定した場合、元の検索文字列が大文字であると、検索する文字列および置換後の文字列の大文字小文字に関係なく、大文字の文字列に置換されます。
前の例の場合、文字列 "ABC" は "XYZ" に置換されます。

 次の使用例は、単語 "library" を検索し、次に、検索された "library" を選択します。
With Selection.Find
    .ClearFormatting
    .MatchWholeWord = True
    .MatchCase = False
    .Execute FindText:="library"
End With

 次の使用例は、作業中の文書で単語 "前略" を検索し、すべての "前略" を "拝啓" に置き換えます。
Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:="前略", _
    ReplaceWith:="拝啓", Replace:=wdReplaceAll


Characters コレクション オブジェクト は、選択範囲、指定範囲、または文書内の文字のコレクションを表します。Character オブジェクトはありません。Characters コレクションの各項目は、1 文字を表す Range オブジェクトです。

使い方

 Characters プロパティを使用して Characters コレクションを取得します。

次の使用例は、選択されている文字の数を表示します。
MsgBox Selection.Characters.Count & " 文字が選択されました。"
 Characters(index) を使用して 1 文字を表す Range オブジェクトを取得します。引数 index にはインデックス番号を指定します。インデックス番号は Characters コレクションでの文字の位置を表します。

次の使用例は、選択範囲の最初の文字に太字を設定し、大きさを 24 ポイントにします。
With Selection.Characters(1)
    .Bold = True
    .Font.Size = 24
End With

解説
 文書内のこのコレクションに Count プロパティを使用して、メイン ストーリー(文書内でほかの領域とは区別できるテキストを含む文書の領域。たとえば、文書に本文、脚注、およびヘッダーが含まれている場合は、本文ストーリー、脚注ストーリー、およびヘッダー ストーリーが含まれています。)に含まれる項目の数を取得します。ほかのストーリーに含まれる項目の数を取得するには、Range オブジェクトと共にコレクションを使用します。
 Characters コレクションに対して Add メソッドは使用できません。その代わりに、InsertAfter または InsertBefore メソッドを使用して、文字を Range オブジェクトに追加します。

次の使用例は、作業中の文書で最初の段落の後に新しい段落を挿入します。
With ActiveDocument
    .Paragraphs(1).Range.InsertParagraphAfter
    .Paragraphs(2).Range.InsertBefore "新しい文字列"
End With


InsertAfter メソッド は、選択範囲の終了位置に指定された文字列を挿入します。このメソッドを使用すると、新しく挿入した文字列の数だけ選択範囲が拡張されます。
 expression.InsertAfter(Text)
 expression   必ず指定します。Selection または Range オブジェクトを表すオブジェクト式を指定します。
 Text   必ず指定します。文字列型 (String) の値を指定します。挿入する文字列を指定します。

解説

 InsertAfter メソッドで Visual Basic の Chr 関数を使用すると、引用符、タブ、改行しないハイフンなどを挿入できます。Visual Basic 定数の vbCrvbLfvbCrLf、および vbTab も使用できます。
 段落全体を選択して InsertAfter メソッドを使用すると、文字列は次の段落の先頭に挿入されます。選択した段落の末尾に文字列を挿入するには、次の使用例に示すように終了位置を決め、その位置から 1 を引きます。段落記号は 1 文字として扱われます。
Set doc = ActiveDocument
Set rngRange = _
    doc.Range(doc.Paragraphs(1).Start, _
    doc.Paragraphs(1).End - 1)
rngRange.InsertAfter _
    "段落 (1) の最後の文"

 ただし、段落記号も含めて選択した範囲が文書の最後の場合は、文書の最後に新しい段落が追加されるのではなく、文字列は最後の段落記号の前に挿入されます。
 また、選択範囲がブックマークの場合は、指定された文字列は挿入されますが、新しく挿入した文字列まで選択範囲は拡張されません。

 次の使用例は、作業中の文書の末尾に文字列を挿入します。Content プロパティは Range オブジェクトを取得します。
ActiveDocument.Content.InsertAfter "文書の末尾"

 次の使用例は、選択範囲の終了位置に文字列を挿入し、選択を解除し、選択終了位置にカーソルを移します。
With Selection
    .InsertAfter "文字列の追加"
    .Collapse Direction:=wdCollapseEnd
End With

 次の使用例は、入力ボックスの文字列を作業中の文書の 2 番目の段落として挿入します。
response = InputBox("文字を入力してください。")
With ActiveDocument.Paragraphs(1).Range
    .InsertAfter "1." & Chr(9) & response
    .InsertParagraphAfter
End With


InsertBefore メソッド は、指定された選択範囲または指定範囲の前に指定された文字列を挿入します。
文字列が挿入されると、選択範囲または指定範囲は新しい文字列の数だけ範囲が拡張されます。
選択範囲または指定範囲がブックマークの場合も、新しい文字列の数だけ範囲が拡張されます。
 expression.InsertBefore(Text)
 expression   必ず指定します。Range または Selection オブジェクトを表すオブジェクト式を指定します。
 Text   必ず指定します。文字列型 (String) の値を指定します。挿入する文字列を指定します。

 InsertBefore メソッドで Visual Basic の Chr 関数を使用すると、引用符、タブ、改行しないハイフンなどを挿入できます。Visual Basic 定数の vbCrvbLfvbCrLf、および vbTab も使用できます。

 次の使用例は、選択範囲の前に二重引用符で囲まれた文字列 "Hamlet" を挿入し、選択範囲の選択を解除します。
With Selection
    .InsertBefore Chr(34) & "Hamlet" & Chr(34) & Chr(32)
    .Collapse Direction:=wdCollapseEnd
End With

 次の使用例は、作業中の文書の先頭に、新しい段落として文字列 "はじめに" を挿入します。
With ActiveDocument.Content
    .InsertParagraphBefore
    .InsertBefore "はじめに"
End With

 次の使用例は、FontNames コレクションのすべてのフォント名を新しい文書に挿入します。
Documents.Add
For Each aFont In FontNames
    With Selection
        .InsertBefore aFont
        .Collapse Direction:=wdCollapseEnd
        .TypeParagraph
    End With
Next aFont


Dialog オブジェクト は、組み込みのダイアログ ボックスを表します。
Dialog オブジェクトは Dialogs コレクションのメンバーです。
Dialogs コレクションには、Word のすべての組み込みのダイアログ ボックスが含まれます。
新しい組み込みのダイアログ ボックスを作成したり、Dialogs コレクションに追加することはできません。

 Dialogs(Index) を使用して 1 つの Dialog オブジェクトを取得します (Index には、ダイアログ ボックスを識別する WdWordDialog クラスの定数を指定)。次の使用例は、組み込みの [ファイルを開く] ダイアログ ボックスで選択された動作を表示し実行します。
dlgAnswer = Dialogs(wdDialogFileOpen).Show

 WdWordDialog クラスの定数は、接頭辞 "wdDialog" とメニューおよびダイアログ ボックスの名前で構成されます。
たとえば、[ページ設定] ダイアログ ボックスを指定する定数は wdDialogFilePageSetup です。
[新規作成] ダイアログ ボックスを指定する定数は wdDialogFileNew です。
 Word の組み込みのダイアログ ボックスを使用する方法については、「Word の組み込みのダイアログ ボックスを表示する」を参照してください。


Dialog.Show メソッド は、指定した Word の組み込みのダイアログ ボックスで行われた操作を表示したり、実行したりします。
ダイアログ ボックスを閉じるときにクリックされたボタンを示す長整数型 (Long) の値を返します。
 構文

.Show(TimeOut)
    必ず指定します。Dialog オブジェクトを表す変数を指定します。
 パラメーター
名前必須/オプションデータ型説明
TimeOutオプションバリアント型 (Variant)ダイアログ ボックスを自動的に閉じるまでの時間を指定します。基本となる単位は約 0.001 秒です。システム アクティビティを同時に実行すると、有効時間の値が増えます。この引数を省略した場合、ユーザーがダイアログ ボックスを閉じたときにダイアログ ボックスは閉じます。
 戻り値
長整数型 (Long)

 Show メソッドが返す値の意味を、次の表に示します。
戻り値説明
-2[閉じる] ボタン。
-1[OK] ボタン。
0 (ゼロ)[キャンセル] ボタン。
> 0 (ゼロ)コマンド ボタン。1 は 1 番目のボタン、2 は 2 番目のボタンに対応します。


 次の使用例は、[検索する文字列] ボックスに "Blue" という語が入力されている [検索と置換] ダイアログ ボックスを表示します。

With  Dialogs(wdDialogEditFind)
    .Find = "Blue"
    .Show
End With

 次の使用例は、[ファイルを開く] ダイアログ ボックスで行われた操作を表示し、実行します。すべてのファイル名を表示できるように、ファイル名に *.* を設定します。
With Dialogs(wdDialogFileOpen)
    .Name = "*.*"
    .Show
End With

 次の使用例は、[ズーム] ダイアログ ボックスで行われた操作を表示し、実行します。約 9 秒間何の操作も開始されない場合、ダイアログ ボックスを閉じます。
Dialogs(wdDialogViewZoom).Show TimeOut:=9000


Application.Dialogs プロパティ は、Word のすべての組み込みのダイアログ ボックスを表す Dialogs コレクションを取得します。値の取得のみ可能です。
 構文

.Dialogs
    Application オブジェクトを表す変数を指定します。

 コレクションのメンバーを取得する方法については、「コレクションからオブジェクトを取得する」を参照してください。

 次の使用例は、組み込みの [検索] ダイアログ ボックスを表示し、[検索する文字列] ボックスに "Hello" と表示します。

Dim dlgFind As Dialog

Set dlgFind = Dialogs(wdDialogEditFind)

With dlgFind
    .Find = "Hello"
    .Show
End With

 次の使用例は、すべてのファイルの種類を表示する、組み込みの [開く] ダイアログ ボックスを表示します。
With Dialogs(wdDialogFileOpen)
    .Name = "*.*"
    .Show
End With

 次の使用例は、[印刷] ダイアログ ボックスの設定を使用して、作業中の文書を印刷します。
Dialogs(wdDialogFilePrint).Execute


Dialog.DefaultTab プロパティ は、指定されたダイアログ ボックスが表示されたときに、現在のタブを設定します。値の取得および設定が可能です。WdWordDialogTab クラスの定数を使用します。
 構文

.DefaultTab
    必ず指定します。Dialog オブジェクトを表す変数です。

 次の使用例は、[用紙] タブが選択されている状態の [ページ設定] ダイアログ ボックスを表示します。

With Dialogs(wdDialogFilePageSetup)
    .DefaultTab = wdDialogFilePageSetupTabPaperSource
    .Show
End With

この種類の目次に戻る↑ 索引へ↓ トップページに戻る


ホームページのトップに戻る