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関連

    [PowerShell]iTextSharpを使ってPDFファイルを結合する

    mougにあった質問「2つのPDFファイルを結合するには」の回答用に書…

  2. アイコン一覧

    Office 2013 アイコン一覧(I)

    ・Office 2013 アイコン一覧 NUM…

  3. Office アドイン

    [Officeアドイン]Word JavaScript APIの機能紹介

    Office Dev Center - Changelogを見ると分か…

  4. Office アドイン

    Visio JavaScript APIで遊んでみました。

    前回の記事でプレビュー版がリリースされた「Visio JavaScri…

  5. Office関連

    「ExcelVBAを実務で使い倒す技術」レビュー

    @ateitexeさんの下記ツイートで、高橋宣成氏が執筆された「Exc…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP