【Outlook VBA】クリップボードをすべてクリアする方法

【Outlook VBA】クリップボードをすべてクリアする方法

Outlook VBAでOutlookクリップボードの履歴の値をすべてクリアする方法させたいときはないでしょうか。

例えば、RPAなどでExcelの処理を大量にさせたらOutlookクリップボードも肥大化して、クリアしたいときです。

けど、そんな中で悩むことは、

・Outlook VBAでOutlookクリップボードの履歴の値をすべてクリアするさせるやり方がわからない。
・ショートカットやVBAで効率的に行いたいがやり方がわからない。

ですよね。

今回はそんなお悩みを解決する

・Outlookクリップボードの履歴の値をすべてクリアさせる基本操作
・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を設置するための下準備をしましょう。

「開発」タブがリボンメニューにない場合は
以下を参考に表示させます。

Outlook 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「オブジェクトが必要です。」が表示される場合があります。

VBA エラー 424「オブジェクトが必要です。」の原因と対処方法

原因は、Outlookクリップボードを表示する前にAccessibleChildrenによるオブジェクトの存在チェックが入り
表示がないため対象がないものと判断されててしまうためです。

対処法としては、VBA実行前にExcelのOutlookクリップボードを手動にて表示させるようにしてください。

また後処理でOutlookクリップボードが消える状態になる場合は、以下の処理を無効化するようにしてください。

‘Outlookクリップボードを元の表示状態に戻す
Application.CommandBars(“Office Clipboard”).Visible = boolVis

さいごに

いかがでしょうか。

今回は、

・Outlookクリップボードの履歴の値をすべてクリアさせる基本操作
・Outlookクリップボードの履歴の値をすべてクリアさせるショートカット
・Outlookクリップボードの履歴の値をすべてクリアさせるVBA

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です