在 Windows 7 中禁用 VBA 生成的 Office 文档的跳转列表条目

发布于 2024-11-18 05:08:52 字数 1181 浏览 3 评论 0原文

我正在 Windows 7 下使用 VBA 中的自动化(在本例中为 MS Access 2007,但这应该不会发生太大变化)以编程方式生成 Office 文档(在我的例子中为 Word 或 Excel 2007)。这工作得很好。

由于文档是自动生成的,我不希望它们出现在最近的列表中。对于 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 任务栏中最近项目的跳转列表或资源管理器中上次使用的文件夹以及“开始”菜单中 Word 最近列表)。 Word 2007 的 Windows7-jumplist 的示例,其中包含自动生成文档的链接

我知道这些列表存储在 %APPDATA 下%\Microsoft\Windows\Recent\AutomaticDestinations 并且我发现要操作 Jumplist,需要使用“WindowsAPICodePack”(我不能从 VBA 使用它, 正确的?)。

要在最近列表中添加项目,我可以使用“shell32.dll”库中的旧 API SHAddToRecentDocs,但使用此 API 函数删除不再起作用,因为它似乎只影响旧“/recent”文件夹中的条目(甚至删除所有不是我本意的东西)。 Windows 7 任务栏 API 上的演示似乎也只提及如何添加项目,但没有提及如何避免这样做或删除特定条目。

我是否遗漏了某些内容,或者是否没有(可以在 VBA 中轻松且理想地使用)方法来操作(或暂时禁用)Windows 7 的录制功能?

亲切的问候 安德烈亚斯

I am programmatically generating Office Documents (in my case Word or Excel 2007) using automation in VBA (in this example MS Access 2007, but that should not change much) under Windows 7. This works fine.

Since the documents are automatically generated I don't want them to show up in the recent lists. For recent list in Word I can just add "AddToRecentFiles:=False" when saving the document (see example) or I could delete the entries afterwards through "Application.RecentFiles ..."

My code

Set objWord = CreateObject("Word.Application")

Set curDocument = objWord.Documents.Add

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

Problem is I could not find a way to disable the recent lists from Windows 7 (i.e. jump list with recent items in the taskbar for Word or last used folders in Explorer and recent list for Word in Start menu).
Example of a Windows7-jumplist for Word 2007 filled up with links to autogenerated documents

I am aware these lists are stored under %APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations and I have found out that to manipulate Jumplist there is the "WindowsAPICodePack" (that I can not use from VBA, right?).

To add an item the the recent list I can use the old API SHAddToRecentDocs from the "shell32.dll" library but deleting with this API function does not work anymore as it only seems to affect the entries in the old "/recent" folder (and even deletes everything what is not my intention). Presentations on the Windows 7 Taskbar API too only seem to mention how to add items but not how to avoid doing so or to delete specific entries.

Am I missing something or is there no -- easy and ideally usable from within VBA -- way to manipulate (or temporerally disable) the recording Windows 7 does?

Kind regards
Andreas

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

阳光①夏 2024-11-25 05:08:52

我在使用 Sharepoint 以编程方式处理 Word 和其他 Office 文档时遇到了类似的问题。

您可以通过PresentationFramework 库(.Net 4) 或WindowsAPICodePack for 3.5(可能更早版本)访问JumpList 对象,但是似乎没有办法以编程方式删除JumpListItems。

我发现一篇文章建议您可以禁用 Word 通过注册表项向跳转列表添加项目。 http://www .add-in-express.com/forum/read.php?PAGEN_1=2&FID=5&TID=8124#nav_start 这应该不会太难以编程方式执行(如果您对生成文档的计算机具有管理员权限)。

我还没有机会尝试这是否有效。如果您找到更优雅的解决方案,请告诉我!

更新:在我的解决方案中,我最终根据 Word 最近的文件列表重新生成跳转列表(我向后循环内部 Word 最近的文件列表,并为每个文件调用 JumpList.AddToRecent 方法)。

I have encountered a similar problem when programmatically dealing with Word and other office documents with Sharepoint.

You can access the JumpList object via the PresentationFramework library (.Net 4) or the WindowsAPICodePack for 3.5 (and possibly earlier) however there does not appear to be a way to programmatically delete JumpListItems.

I found a post which suggests that you can disable Word from adding items to the JumpList via registry key. http://www.add-in-express.com/forum/read.php?PAGEN_1=2&FID=5&TID=8124#nav_start This shouldn't be too hard to do programmatically (if you have admin rights on the machine generating the documents).

I haven't had a chance to try out whether this works yet. If you find a more elegant solution please let me know!

Update: In my solution I ended up regenerating the jumplist based on the Word Recent files list (I looped backwards through the internal Word recent files list and called JumpList.AddToRecent method for each file).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文