Outlook VBAでOutlookクリップボードの履歴の値をすべてクリアする方法させたいときはないでしょうか。
例えば、RPAなどでExcelの処理を大量にさせたらOutlookクリップボードも肥大化して、クリアしたいときです。
けど、そんな中で悩むことは、
・ショートカットやVBAで効率的に行いたいがやり方がわからない。
ですよね。
今回はそんなお悩みを解決する
・Outlookクリップボードの履歴の値をすべてクリアさせるショートカット
・Outlookクリップボードの履歴の値をすべてクリアさせるVBA
についてまとめます!
もくじ
Outlookクリップボードの履歴の値をすべてクリアさせる基本操作
Outlookのメッセージウィンドウで[クリップボード]グループの[右下矢印]をクリックします
[クリップボード]メニューの[すべてクリア]をクリックします
Outlookクリップボードの履歴の値がクリアされました
Outlookクリップボードの履歴の値をすべてクリアさせるショートカット
Outlookクリップボードの履歴の値をすべてクリアさせるショートカットは以下の順序で実施します。
Alt + H
Alt + FO
すべてクリアをクリック
もしくは
Win + V
…クリック
すべてクリアをクリック
Outlookクリップボードの履歴の値をすべてクリアさせるVBA
Outlookクリップボードの履歴の値をすべてクリアさせるVBA_64bit版
Outlookの64bit版のみの対応となります。
以下のExcel版を参考に変更したコードとなっています。
【Excel VBA】クリップボードをすべてクリアする方法
Private Declare PtrSafe Function AccessibleChildren Lib "oleacc" (ByVal paccContainer As Office.IAccessible, ByVal iChildStart As Long, ByVal cChildren As Long, ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
Public Sub クリップボードの履歴の値をすべてクリア_64bit()
Dim objCombar As Variant
Dim objClipboard As Variant
Dim num As Integer
Dim boolVis As Boolean
Set objCombar = Application.ActiveExplorer.CommandBars("Office Clipboard")
boolVis = objCombar.Visible
'クリップボード非表示の場合表示させます。
If Not boolVis Then
objCombar.Visible = True
DoEvents
End If
'「すべてクリア」のボタンへ遷移します。
For num = 1 To 3
AccessibleChildren objCombar, 0, 1, objCombar, 1
AccessibleChildren objCombar, 3, 1, objCombar, 1
Next
AccessibleChildren objCombar, 1, 1, objCombar, 1
'IAccessibleオブジェクトのaccDoDefaultAction メソッドで「すべてクリア」のボタンを実行します。
objCombar.accDoDefaultAction CLng(0)
'クリップボードを元の表示状態に戻します。
Application.ActiveExplorer.CommandBars("Office Clipboard").Visible = boolVis
MsgBox "クリップボードの内容をすべてクリアしました。"
End Sub
実行し、以下の表示がされれば完成です!
クリップボードの中身がクリアされていますね!
VBAの実装手順
VBAを設置する下準備をする
VBAを設置するための下準備をしましょう。
「開発」タブがリボンメニューにない場合は
以下を参考に表示させます。
VBAを登録する
次にマクロを登録します。
「開発」タブ>「Visual Basic」を押します。
「Visual Basic Editor」にて、[Project1] > [Microsoft Outlook Objects] > [ThisOutlookSession] を開き、こちらにコードを貼り付けます。
こちらで実装完了です。
VBAを実行する
VBAを実行する手順となります。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
Outlookクリップボードの履歴の値をすべてクリアさせるVBAの説明
今回のVBAについて説明をします。
Application.ActiveExplorerメソッドでOutlook最上位のExplorer オブジェクトを指定し、クリップボードのボタンがあるCommandBarsオブジェクトを取得、オブジェクトにセットします。
Set objCombar = Application.ActiveExplorer.CommandBars("Office Clipboard")
Outlookクリップボードが非表示の場合、「クリアボタン」操作のため表示させます。
If Not boolVis Then
objCombar.Visible = True
DoEvents
End If
コンテナオブジェクト内の子IDを指定し、
「すべてクリア」のボタンへ遷移します。
For num = 1 To 3
AccessibleChildren objCombar, 0, 1, objCombar, 1
AccessibleChildren objCombar, 3, 1, objCombar, 1
Next
AccessibleChildren objCombar, 1, 1, objCombar, 1
IAccessibleオブジェクトのaccDoDefaultAction メソッドで「すべてクリア」のボタンを実行します。
objCombar.accDoDefaultAction CLng(0)
クリップボードを元の表示状態に戻します。
Application.ActiveExplorer.CommandBars("Office Clipboard").Visible = boolVis
実行時エラー424「オブジェクトが必要です。」が表示される場合の対処法
本VBAを繰り返し実行をするとまれに実行時エラー424「オブジェクトが必要です。」が表示される場合があります。
原因は、Outlookクリップボードを表示する前にAccessibleChildrenによるオブジェクトの存在チェックが入り
表示がないため対象がないものと判断されててしまうためです。
対処法としては、VBA実行前にExcelのOutlookクリップボードを手動にて表示させるようにしてください。
また後処理でOutlookクリップボードが消える状態になる場合は、以下の処理を無効化するようにしてください。
‘Outlookクリップボードを元の表示状態に戻す
Application.CommandBars(“Office Clipboard”).Visible = boolVis
さいごに
いかがでしょうか。
今回は、
・Outlookクリップボードの履歴の値をすべてクリアさせるショートカット
・Outlookクリップボードの履歴の値をすべてクリアさせるVBA
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す