【问题标题】:Identify Pinned RecentFiles in (Excel 2007) VBA or other?在 (Excel 2007) VBA 或其他中识别固定的最近文件?
【发布时间】:2011-08-13 20:16:18
【问题描述】:

除了扫描注册表之外,有没有其他方法可以确定 RecentFile 对象被固定到“最近的文档”列表中?来自 VBA 的偏好,可以存在于加载项中的东西。

背景:我希望说服 Excel 将固定项目“浮动”到列表的顶部(或底部),这可以通过将它们重新Adding 到最近的文件来实现,只要我能识别感兴趣的项目。

我可以在注册表中(在HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\File MRU 内)看到固定项目在那里被识别,例如:

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

...所以这是一种接近它的方法,我想。我更喜欢少一点的,呃,令人兴奋的..

【问题讨论】:

    标签: vba excel excel-2007 ribbon


    【解决方案1】:

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

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

    我认为除了使用注册表来确定最近的文件是否已固定之外,没有其他方法。下面的示例允许您循环浏览所有最近的文件,确定未固定的文件并更改注册表以使其固定。注释掉是一种删除方式

    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
    

    【讨论】:

    • 因此,2010 年对 Ribbon 的(某种程度上)扩展支持似乎并没有扩展那么远。 :-( 因为我们可能要到 2015 年左右才能看到 Excel 2010,所以我会感到失望。哦,好吧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 2020-08-26
    • 1970-01-01
    相关资源
    最近更新 更多