2011-04-27 10 views
4

RecentFile 개체가 "최근 문서"목록에 고정되어 있는지 확인하기 위해 레지스트리를 검사하는 방법 외에 다른 방법이 있습니까? VBA에서 기본 설정으로 추가 기능에 살 수있는 항목.(Excel 2007) VBA 또는 기타에 고정 된 최신 파일 식별?

배경 : 내가 항목을 식별 할 수있는 경우에만 Add 최근 파일로 전송하여 얻을 수있는 목록의 상단 (또는 하단)에 고정 된 항목을 "플로팅"하도록 Excel을 설득하고자합니다. 관심의 대상. 그게 접근 할 수있는 방법이 그래서

내가 ... :, 고정 된 항목이 확인된다 (HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\File MRU 이내) 레지스트리에

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

을 예컨대을 볼 수 있습니다, 나는 가정한다. VBA 내가 레지스트리를 사용하는 것보다 다른 대체 방법이 생각하지 않습니다

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

를 사용에서 나는 recentfile 목록에 액세스하려면, 어, 좀 덜 흥미로운 ..

답변

3

뭔가를 원합니다 최근 파일이 고정되었는지 여부를 결정합니다. 아래의 예제는 모든 최신 파일을 검토하고, 고정되지 않은 파일을 판별하고, 고정 된 파일로 변경합니다. 댓글을 쓰는 방법은 삭제하는 것입니다

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 
+0

2010 년 리본 확장 지원이 그다지 연장되지 않는 것처럼 보입니다. :-(우리가 아마도 2015 년경까지 Excel 2010을 보지 못할 것이기 때문에 나는 그 기대에 기대를 걸 것이다. –