Office関連

Officeアプリケーションの「最近使用したファイル」を削除するVBScript

WordやExcel等のOfficeアプリケーションでは、下記サイトにある通り、ファイルやフォルダの履歴がレジストリに記録されます。

Officeアプリケーションを使って人前でプレゼンをするとき等、履歴を表示したくない時に、いちいち手作業でレジストリを編集するのは面倒なので、所謂“最近使用したファイル”を一括で削除するスクリプトを書いてみました。

Option Explicit

Dim app, v

'Officeのバージョン取得
On Error Resume Next
Set app = CreateObject("Excel.Application")
On Error GoTo 0
If IsEmpty(app) Then
  WScript.Echo "Officeアプリケーションのバージョンを取得できませんでした。"
  Wscript.Quit
End If
v = app.Version
app.Quit
Set app = Nothing

ClearOfficeMRU "Software\Microsoft\Office\" & v & "\"
WScript.Echo "処理が終了しました。"

Private Sub ClearOfficeMRU(ByVal SubKeyName)
'全Officeアプリケーションの「最近使用したファイル」を削除する
  Dim shell, reg
  Dim keys, key
  Dim subkeys, subkey
  Dim names, types
  Dim i
  Const HKEY_CURRENT_USER = &H80000001
  
  Set shell = CreateObject("WScript.Shell")
  Set reg = CreateObject("WbemScripting.SWbemLocator") _
            .ConnectServer(, "root\default").Get("StdRegProv")
  reg.EnumKey HKEY_CURRENT_USER, SubKeyName, keys
  If Not IsNull(keys) Then
    For Each key In keys
      Select Case LCase(key)
        Case "file mru", "place mru", "user mru"
          reg.EnumValues HKEY_CURRENT_USER, SubKeyName & key, names, types
          If Not IsNull(names) Then
            If UBound(names) > 1 Then
              For i = LBound(names) To UBound(names)
                If InStr(LCase(names(i)), "metadata") < 1 Then
                  If InStr(LCase(names(i)), "item") > 0 Then
                    'WScript.Echo shell.RegRead("HKEY_CURRENT_USER\" & SubKeyName & key & "\" & names(i)) '確認用
                    shell.RegDelete "HKEY_CURRENT_USER\" & SubKeyName & key & "\" & names(i)
                  End If
                End If
              Next
            Else
              reg.EnumKey HKEY_CURRENT_USER, SubKeyName & key, subkeys
              If Not IsNull(subkeys) Then
                For Each subkey In subkeys
                  ClearOfficeMRU SubKeyName & key & "\" & subkey & "\"
                Next
              End If
            End If
          End If
        Case Else
          ClearOfficeMRU SubKeyName & key & "\"
      End Select
    Next
  End If
End Sub

仕組みは非常に単純で、下記のキー以下にある「File MRU」「User MRU」「Place MRU」キーを探し、履歴として残っている値(Item*)を削除する処理を再帰的に行っているだけです。

ただし、下記キー以下に対して順次処理を行っているため、すべての処理を終えるのに多少の時間は掛かります。

HKEY_CURRENT_USER\Software\Microsoft\Office\(Officeのバージョン)\(Officeアプリケーション)\

また、動作確認は行っているものの、上記スクリプトはレジストリの編集を行うものですので、実行は自己責任でよろしくお願いいたします。

関連記事

  1. Office関連

    関数一覧(Excel 2013 Customer Preview)

    関数の挿入ダイアログから抽出したExcel 2013 Customer…

  2. Office関連

    Wordの自動実行マクロ

    たまたま使用する機会があったのでメモ書き程度に情報を残しておきます。…

  3. Office関連

    Office 365 APIをVBAから呼び出す(2)

    前回の記事ではOffice 365とAzure ADの紐づけを行いまし…

  4. Office関連

    Custom UI Editorの最新版がGitHubで公開されました。

    下記記事等で紹介している、リボンUIをカスタマイズするためのツール「C…

  5. Office関連

    Outlook REST APIに会議室情報を取得するAPIが追加されました。

    松崎さんのツイートで、Outlook REST APIのベータエンドポ…

  6. Office関連

    ブラウザで簡単にOfficeドキュメントを確認できる「Office Web ビューアー」

    @seinoro さんのツイート(下記)で知ったサービス「View O…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP