Отключить элементы списка переходов в Windows 7 для документов Office, созданных VBA - PullRequest
2 голосов
/ 01 июля 2011

Я программно генерирую документы Office (в моем случае Word или Excel 2007), используя автоматизацию в VBA (в этом примере MS Access 2007, но это не должно сильно измениться) под Windows 7. Это работает нормально.

Поскольку документы генерируются автоматически, я не хочу, чтобы они отображались в последних списках. Для недавнего списка в Word я могу просто добавить «AddToRecentFiles: = False» при сохранении документа (см. Пример), или я мог бы впоследствии удалить записи через «Application.RecentFiles ...»

Мой код

Set objWord = CreateObject("Word.Application")

Set curDocument = objWord.Documents.Add

curDocument.SaveAs FileName:=Folder + "text.doc", FileFormat:=wdFormatDocument, 
            AddToRecentFiles:=False
curDocument.Close

Проблема в Я не смог найти способ отключить недавние списки из Windows 7 (то есть список переходов с последними элементами на панели задач для Word или последними использованными папками в Explorer и недавний список для Word в меню Пуск). Example of a Windows7-jumplist for Word 2007 filled up with links to autogenerated documents

Мне известно, что эти списки хранятся в папке% APPDATA% \ Microsoft \ Windows \ Recent \ AutomaticDestitions, и я обнаружил, что для управления списком переходов существует «WindowsAPICodePack» (который я могу не использовать из VBA, верно?).

Чтобы добавить элемент в недавний список, я могу использовать старый API SHAddToRecentDocs из библиотеки "shell32.dll", но удаление с помощью этой функции API больше не работает, так как кажется, что оно влияет только на записи в старом "/ недавний "(и даже удаляет все, что не является моим намерением). Представляется также, что в презентациях по API панели задач Windows 7 только упоминается, как добавлять элементов, но не как избежать этого или удалять определенные записи.

Я что-то упустил или нет - простой и идеально подходящий для использования из VBA - способ манипулировать (или временно отключать) записью Windows 7?

С уважением Andreas

1 Ответ

1 голос
/ 28 июля 2011

Я столкнулся с подобной проблемой при программной обработке Word и других офисных документов с Sharepoint.

Вы можете получить доступ к объекту JumpList через библиотеку PresentationFramework (.Net 4) или WindowsAPICodePack для 3.5 (и, возможно,ранее) однако, похоже, нет способа программно удалить JumpListItems.

Я нашел сообщение, в котором предлагается отключить Word от добавления элементов в JumpList через раздел реестра.http://www.add -in-express.com / forum / read.php? PAGEN_1 = 2 & FID = 5 & TID = 8124 # nav_start Это не должно быть слишком сложно сделать программно (если у вас есть права администратора на машинесоздание документов).

У меня не было возможности проверить, работает ли это еще.Если вы найдете более элегантное решение, пожалуйста, дайте мне знать!

Обновление: в моем решении я регенерировал список переходов на основе списка последних файлов Word (я перебрал в обратном направлении по внутреннему списку последних файлов Word и вызвал JumpListМетод .AddToRecent для каждого файла).

...