Sub EspDialogReplace()
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Rem エスペラント語[検索と置換]ダイアログボックス表示処理
  Rem 作譜:Hitrock Camellia Shinopy
  Rem 言語:Word VBA
  Rem 機能...
  Rem   1. 入力した代用表記の文字列を正書文字に変更する。
  Rem   2. 入力した文字列を[検索と置換]ダイアログボックス上に表示する。
  Rem 注記...
  Rem   1.「EspDialogReplace」を起動して、処理を実行する。
  Rem   2.「検索と置換」の画面立ち上げ支援マクロ処理を参照して作成。
  Rem      http://wordvba.cocolog-nifty.com/blog/2010/04/post-8963.html
  Rem 履歴...
  Rem   第01版:2010/10/05:作成。
  Rem   第02版:2018/10/28:アイコン表示を変更。
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Dim myTitle As String
  '
  myTitle = "EspDialogReplace"
  '
  On Error Resume Next
  CommandBars(myTitle).Delete
  On Error GoTo 0
  '
EspDialogReplaceSubEntry:
  Do
    Call EspDialogReplacePopUp(myTitle)
    If CommandBars(myTitle).Controls(1).FaceId = 330 Then Exit Do
    '
    With Selection.Find
      .ClearFormatting
      .Replacement.ClearFormatting
      .Text = CommandBars(myTitle).Controls("検索").Text
      .Replacement.Text = CommandBars(myTitle).Controls("置換").Text
      Select Case CommandBars(myTitle).Controls(4).Caption
        Case "大文字と小文字を区別しない。": .MatchCase = False
        Case "大文字と小文字を区別する。": .MatchCase = True
      End Select
    End With
    '
    On Error Resume Next
    Dialogs(wdDialogEditReplace).Show
    On Error GoTo 0
    '
    Exit Do
  Loop
  '
EspDialogReplaceSubExit:
  On Error Resume Next
  CommandBars(myTitle).Delete
  On Error GoTo 0
End Sub ' EspDialogReplace *----*----*    *----*----*    *----*----*    *----*----*

Sub EspDialogReplacePopUp(myTitle As String)
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Rem ポップアップメニュー表示処理
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  '
  Dim myCmmdBar As CommandBar
  Dim x As Long
  Dim y As Long
  Dim myFaceId As Long
  Dim myMsg As String
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  '
  Call EspDialogReplaceCmmdBar(myTitle)
  Set myCmmdBar = CommandBars(myTitle)
  '
  x = -1: y = -1
  myFaceId = myCmmdBar.Controls(1).FaceId
  Beep
  '
  Do
    On Error Resume Next
    If x = -1 Then
      myCmmdBar.ShowPopup
    Else
      myCmmdBar.ShowPopup x, y
    End If
    On Error GoTo 0
    DoEvents
    '
    Select Case myCmmdBar.Controls(1).FaceId
      Case 157, 330 ' [OK]・[キャンセル]
        Exit Do
      Case 1850 ' [検索]・[置換]
        x = myCmmdBar.Left
        y = myCmmdBar.Top
      Case 2201 ' [大文字と小文字を区別する]
        x = myCmmdBar.Left
        y = myCmmdBar.Top
      Case 1089
        x = -1: y = -1
      Case Else
        x = -1: y = -1
    End Select
    myCmmdBar.Controls(1).FaceId = myFaceId
  Loop
End Sub ' EspDialogReplacePopUp *----*----*    *----*----*    *----*----*    *----*----*

Sub EspDialogReplaceCmmdBar(myTitle As String)
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Rem ショートカットメニュー設定処理
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Dim myCmmdBar As CommandBar
  Dim myCtrlBttnIcon As CommandBarControl
  Dim myCtrlEditFind As CommandBarControl
  Dim myCtrlEditReplace As CommandBarControl
  Dim myCtrlMatchCase As CommandBarControl
  Dim myCtrlBttnCancel As CommandBarControl
  Dim myCtrlBttnOk As CommandBarControl
  '
  Dim myMsg As String
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  '
  Set myCmmdBar = CommandBars.Add(Name:=myTitle, Position:=msoBarPopup, Temporary:=True)
  Set myCtrlBttnIcon = myCmmdBar.Controls.Add(Type:=msoControlButton, Before:=1, Temporary:=True)
  Set myCtrlEditFind = myCmmdBar.Controls.Add(Type:=msoControlEdit, Before:=2, Temporary:=True)
  Set myCtrlEditReplace = myCmmdBar.Controls.Add(Type:=msoControlEdit, Before:=3, Temporary:=True)
  Set myCtrlMatchCase = myCmmdBar.Controls.Add(Type:=msoControlButton, Before:=4, Temporary:=True)
  Set myCtrlBttnCancel = myCmmdBar.Controls.Add(Type:=msoControlButton, Before:=5, Temporary:=True)
  Set myCtrlBttnOk = myCmmdBar.Controls.Add(Type:=msoControlButton, Before:=6, Temporary:=True)
  '
  myMsg = myTitle & vbCrLf
  myMsg = myMsg & "エスペラント語[検索と置換]" & vbCrLf
  myMsg = myMsg & "ダイアログボックス表示処理" & String(20, " ") & vbCrLf
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  '
  With myCtrlBttnIcon
    .DescriptionText = "[検索と置換]ダイアログボックス表示処理ショートカットメニュー"
    .Style = msoButtonIconAndWrapCaption
    .Caption = myMsg & "入力して下さい。"
    .TooltipText = "入力して下さい。"
    .FaceId = 1089
    .OnAction = myTitle & "BttnIcon"
  End With
  '
  With myCtrlEditFind
    .DescriptionText = "[検索]エディットボックス"
    .Caption = "検索"
    .TooltipText = "検索したい文字列を入力して下さい。"
    .BeginGroup = True
    .OnAction = myTitle & "EditFind"
  End With
  '
  With myCtrlEditReplace
    .DescriptionText = "[置換]エディットボックス"
    .Caption = "置換"
    .TooltipText = "置き換え文字列を入力して下さい。"
    .BeginGroup = True
    .OnAction = myTitle & "EditReplace"
  End With
  '
  With myCtrlMatchCase
    .DescriptionText = "[大文字と小文字を区別する]ボタン"
    .Style = msoButtonIconAndWrapCaption
    Select Case Selection.Find.MatchCase
       Case True
         .Caption = "大文字と小文字を区別する。"
         .TooltipText = "大文字と小文字を区別して検索します。"
       Case False
         .Caption = "大文字と小文字を区別しない。"
         .TooltipText = "大文字と小文字を区別せずに検索します。"
    End Select
    .BeginGroup = True
    .FaceId = 2201
    .OnAction = myTitle & "MatchCase"
  End With
  '
  With myCtrlBttnCancel
    .DescriptionText = "[キャンセル]ボタン"
    .BeginGroup = True
    .Style = msoButtonIconAndCaption
    .Caption = "キャンセル"
    .TooltipText = "処理を中止します。"
    .BeginGroup = True
    .FaceId = 330
    .OnAction = myTitle & "BttnCancel"
  End With
  '
  With myCtrlBttnOk
    .DescriptionText = "[OK]ボタン"
    .BeginGroup = True
    .Style = msoButtonIconAndWrapCaption
    .Caption = "OK"
    .TooltipText = "[検索と置換]ダイアログボックスを表示します。"
    .BeginGroup = True
    .FaceId = 157
    .OnAction = myTitle & "BttnOk"
  End With
End Sub ' EspDialogReplaceCmmdBar *----*----*    *----*----*    *----*----*    *----*----*

Sub EspDialogReplaceBttnIcon(Optional myDummy As Boolean)
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Rem [メニュー]処理
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  '
  CommandBars("EspDialogReplace").Controls(1).FaceId = 1089
End Sub ' EspDialogReplaceBttnIcon *----*----*    *----*----*    *----*----*    *----*----*

Sub EspDialogReplaceEditFind(Optional myDummy As Boolean)
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Rem [検索]入力処理
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Dim myText As String
  '
  myText = CommandBars("EspDialogReplace").Controls("検索").Text
  Call EspDialogReplaceText(myText)
  CommandBars("EspDialogReplace").Controls("検索").Text = myText
  '
  CommandBars("EspDialogReplace").Controls(1).FaceId = 1850
End Sub ' EspDialogReplaceEditFind *----*----*    *----*----*    *----*----*    *----*----*

Sub EspDialogReplaceEditReplace(Optional myDummy As Boolean)
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Rem [置換]入力処理
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Dim myText As String
  '
  myText = CommandBars("EspDialogReplace").Controls("置換").Text
  Call EspDialogReplaceText(myText)
  CommandBars("EspDialogReplace").Controls("置換").Text = myText
  '
  CommandBars("EspDialogReplace").Controls(1).FaceId = 1850
End Sub ' EspDialogReplaceEditReplace *----*----*    *----*----*    *----*----*    *----*----*

Sub EspDialogReplaceMatchCase(Optional myDummy As Boolean)
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Rem [大文字と小文字を区別する]ボタン処理
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  '
  With CommandBars("EspDialogReplace").Controls(4)
    Select Case .Caption
       Case "大文字と小文字を区別しない。"
         .Caption = "大文字と小文字を区別する。"
         .TooltipText = "大文字と小文字を区別して検索します。"
       Case "大文字と小文字を区別する。"
         .Caption = "大文字と小文字を区別しない。"
         .TooltipText = "大文字と小文字を区別せずに検索します。"
    End Select
  End With
  '
  CommandBars("EspDialogReplace").Controls(1).FaceId = 2201
End Sub ' EspDialogReplaceMatchCase *----*----*    *----*----*    *----*----*    *----*----*

Sub EspDialogReplaceBttnCancel(Optional myDummy As Boolean)
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Rem [キャンセル]ボタン処理
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  '
  CommandBars("EspDialogReplace").Controls(1).FaceId = 330
End Sub ' EspDialogReplaceBttnCancel *----*----*    *----*----*    *----*----*    *----*----*

Sub EspDialogReplaceBttnOk(Optional myDummy As Boolean)
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  Rem [OK]ボタン処理
  Rem *----*----*    *----*----*    *----*----*    *----*----*
  '
  CommandBars("EspDialogReplace").Controls(1).FaceId = 157
End Sub ' EspDialogReplaceBttnOk *----*----*    *----*----*    *----*----*    *----*----*

Sub EspDialogReplaceText(myText As String)
  myText = Replace(myText, "cx", ChrW(265))
  myText = Replace(myText, "gx", ChrW(285))
  myText = Replace(myText, "hx", ChrW(293))
  myText = Replace(myText, "jx", ChrW(309))
  myText = Replace(myText, "sx", ChrW(349))
  myText = Replace(myText, "ux", ChrW(365))
  '
  myText = Replace(myText, "Cx", ChrW(264))
  myText = Replace(myText, "Gx", ChrW(284))
  myText = Replace(myText, "Hx", ChrW(292))
  myText = Replace(myText, "Jx", ChrW(308))
  myText = Replace(myText, "Sx", ChrW(348))
  myText = Replace(myText, "Ux", ChrW(364))
  '
  myText = Replace(myText, "c^", ChrW(265))
  myText = Replace(myText, "g^", ChrW(285))
  myText = Replace(myText, "h^", ChrW(293))
  myText = Replace(myText, "j^", ChrW(309))
  myText = Replace(myText, "s^", ChrW(349))
  myText = Replace(myText, "u^", ChrW(365))
  '
  myText = Replace(myText, "C^", ChrW(264))
  myText = Replace(myText, "G^", ChrW(284))
  myText = Replace(myText, "H^", ChrW(292))
  myText = Replace(myText, "J^", ChrW(308))
  myText = Replace(myText, "S^", ChrW(348))
  myText = Replace(myText, "U^", ChrW(364))
  '
  myText = Replace(myText, "a_", ChrW(226))
  myText = Replace(myText, "e_", ChrW(234))
  myText = Replace(myText, "i_", ChrW(238))
  myText = Replace(myText, "o_", ChrW(244))
  myText = Replace(myText, "u_", ChrW(251))
  '
  myText = Replace(myText, "A_", ChrW(194))
  myText = Replace(myText, "E_", ChrW(202))
  myText = Replace(myText, "I_", ChrW(206))
  myText = Replace(myText, "O_", ChrW(212))
  myText = Replace(myText, "U_", ChrW(219))
End Sub ' EspDialogReplaceText *----*----*    *----*----*    *----*----*    *----*----*

inserted by FC2 system