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

    ドラッグ&ドロップでExcelファイルをアドイン形式(xlam)に一括変換するVBScript

    複数のExcelファイルをアドイン形式(xlam)に変換する必要があっ…

  2. Office関連

    Internet Explorer用OneNoteアドオンを利用して指定したWebページをOneNo…

    「Evernote Webクリッパーで指定したWebページをEvern…

  3. アイコン一覧

    Office 2013 アイコン一覧(D)

    ・Office 2013 アイコン一覧 NUM…

  4. アイコン一覧

    Office 2013 アイコン一覧(K,L)

    ・Office 2013 アイコン一覧 NUM…

  5. Office関連

    Office XP Developer Toolsでリボン対応のCOMアドインを作成する。

    「Visual Basic 6でリボン対応のアドインを作成する」ではV…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP