アンドゥ(Undo)を記録するマクロ (Word 2010専用):コード紹介 | みんなのワードマクロ

みんなのワードマクロ

ワードマクロで、文書作成とオフィス事務を効率化!!

昨日の「アンドゥ(Undo)を記録するマクロ (Word 2010専用) 」では、コードの取得が難しくて失礼いたしました。

テンプレートにしてお渡ししないと実施が難しいと思っていましたが、通常通りにNormalテンプレートに保存しても実行が可能です。

Word2010でツールバーにボタンを作成する方法も記載されています。


▼マクロ
Private ur As Word.UndoRecord
Private Const CBAR_NAME As String = "アンドゥ・一気"

Sub AutoExec()

 Dim myCbar As CommandBar
 Dim myCbarCtl As CommandBarControl

 If CInt(Application.Version) < 14 Then Exit Sub
 
 On Error Resume Next
 Application.CommandBars(CBAR_NAME).Delete
 On Error GoTo 0

 Set myCbar = CommandBars.Add(Name:=CBAR_NAME, Position:=msoBarLeft, MenuBar:=False, Temporary:=True)
 myCbar.Visible = True

 Set myCbarCtl = CommandBars(CBAR_NAME).Controls.Add(Type:=msoControlButton, Temporary:=True, Before:=1)
 With myCbarCtl
  .Caption = "[アンドゥ・一気]"
  .TooltipText = "アンドゥを記録します。"
  .OnAction = "MWM_Undo_Ikki"
  .Style = 2
 End With
 
 Set myCbarCtl = Nothing
 Set myCbar = Nothing

End Sub

Sub MWM_Undo_Ikki()

If Not ur Is Nothing Then
  Call EndUR
Else
  Call StartUR
End If

End Sub

Private Sub StartUR()

 'アンドゥの記録開始
 
 Application.CommandBars(CBAR_NAME).Controls("[アンドゥ・一気]").State = msoButtonDown
 Set ur = Application.UndoRecord
 If ur.IsRecordingCustomRecord = False Then
  ur.StartCustomRecord "アンドゥ・一気"
 End If
 
End Sub

Private Sub EndUR()
 'アンドゥの記録終了

 Application.CommandBars(CBAR_NAME).Controls("[アンドゥ・一気]").State = msoButtonUp
 If ur.IsRecordingCustomRecord = True Then
  ur.EndCustomRecord
  Set ur = Nothing
 End If
 
End Sub


▼解説
上記には4つのマクロが含まれています。

Sub マクロ名()
...
End Sub



Private Sub マクロ名()
...
End Sub

が1つのマクロの単位です。
上記では、他章記載が異なりますが、4つのくくりがあることがわかると思います。

一番上のSub AutoExec() で、ボタン作成をしています。

アドインタブに表示される[アンドゥ・一気]です。

マクロ名を AutoExec とすると、Word起動時に自動で実行されます。

なので、このマクロでは、上記のボタンをWord 起動時に毎回作成しているのです。


▼関連記事
「元に戻す(Undo)」の新機能 目次

アンドゥ(Undo)を記録するマクロ (Word 2010専用)

マクロコードの登録方法