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アプリケーション)\

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

[PowerShell]PdfSharpを使ってPDFファイルを作成する前のページ

[Google Apps Script]認証が必要なウェブアプリケーションを外部から実行する次のページ

関連記事

  1. Office関連

    Microsoft MVP for Outlook を初受賞しました。

    2010年7月から「Office System」分野でMicrosof…

  2. Excel

    Acrobatを使ってPDFのドロップダウンリストに項目を追加するVBAマクロ

    久々のVBAネタです。“Acrobatを使って手作業で更新している…

  3. Office関連

    Google TTSで文字列を読み上げるExcelアドイン

    前回の記事で書いたGoogle TTSで文字列を読み上げるマクロ(言語…

  4. Office関連

    RESAS-APIをVBAから呼び出す方法

    下記記事の通り「地域経済分析システム RESAS」のAPIが公開された…

  5. アイコン一覧

    Office 365アイコン(imageMso)一覧(Q)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP