识别(Excel 2007)VBA中的固定的RecentFiles或其他?

有没有一种方法,而不是扫描registry,以确定RecentFile对象被固定到“最近的文档”列表? 从VBA的偏好,可以生活在一个附加的东西。

背景:我希望说服Excel将固定的项目“浮动”到列表的顶部(或底部),这可以通过重新Add到RecentFiles来实现,只要我能够确定感兴趣的项目即可。

我可以在registry中(在HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\File MRU )看到固定的项目在那里被标识,例如:

 [F00000001][T01CC04D632020F50]*C:\Files\ThisOneIsPinned.xlsx [F00000000][T01CBFB8F14408960]*C:\Files\ThisOneIsNot.xlsx 

…所以这是一个方法来处理它,我想。 我宁愿less点东西,呃, 令人兴奋的 ..

访问VBA中最近使用的文件列表

 Sub test() Dim objAllRecentFiles As Object Set objAllRecentFiles = Application.recentfiles End Sub 

我不相信除了使用registry来确定最近的文件是否被固定以外,还有其他方法。 下面的示例允许您遍历所有最近的文件,确定那些没有固定的文件,并更改registry以使其固定。 注释掉是一种删除的方法

 Sub test2() Dim objAllRecentFiles As Object Dim WSHShell, RegKey, rKeyWord Set WSHShell = CreateObject("WScript.Shell") Set objAllRecentFiles = Application.recentfiles RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\File MRU\" For Each rFile In objAllRecentFiles rKeyWord = WSHShell.RegRead(RegKey & "Item " & rFile.Index) If InStr(1, rKeyWord, "[F00000000]") Then 'Delete registry 'rFile.Delete 'Change registry setting to make recent file pinned strPinned = Replace(rKeyWord, "[F00000000]", "[F00000001]") WSHShell.Regwrite (RegKey & "Item " & rFile.Index), strPinned, "REG_SZ" End If Next rFile End Sub