Excel

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

    MemsourceのバイリンガルMXLIFFファイルから情報を抽出するWordマクロ

    近年翻訳業界では「Trados」や「memoQ」といった、“翻訳支援ツ…

  2. VBScript

    OWSPostDataオブジェクトを使って文字列をエンコードするVBS

    OWSPostDataオブジェクトのURLEncodeメソッドで文字列…

  3. Office関連

    【2018年7月版】ソースコードを番号行付きのテーブルに変換するWordマクロ

    6年以上前、Wordに貼り付けたソースコードを番号付きのテーブルに変換…

  4. Office関連

    手軽に参照設定するためのVBAアドイン

    thom氏のブログで面白い記事がありました。・VBA 参照…

  5. Windows関連

    Lhaplusのバージョンを取得するVBScript

    およそ2年ぶりに圧縮・解凍ソフトの「Lhaplus」がバージョンアップ…

  6. Office関連

    [VBA]CommandBars(“○○”).Controls.Addでメニ…

    Officeのユーザインタフェースがリボンに変わってから、下記のように…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP