【发布时间】:2014-06-04 01:55:08
【问题描述】:
我正在使用来自 VBA 的 Microsoft Shell 控件和自动化 COM 库。我有一个 zip 文件,我正在将一个文件复制到 zip 文件中。问题是该文件已经存在,它会抛出一个对话框,上面写着“这个位置已经有一个同名的文件,你想要 a) 复制和替换还是 b) 不要复制”。我想以编程方式说复制和替换(覆盖!)。
我认为 .NET 框架上的等价物在 http://msdn.microsoft.com/en-us/library/windows/desktop/ms723207%28v=vs.85%29.aspx 有一个文档页面 但我已经尝试了很多。
另外,我会接受删除原始项目,以便添加成功而没有问题;遗憾的是我找不到删除项目的方法。
我使用的是 Windows 8,64 位版本。我在 Excel (14) VBA (7) 中,我使用的库位于 C:\Windows\SysWOW64\shell32.dll
这是我正在谈论的类型库的 IDL 负责人
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: shell32.dll
[
uuid(50A7E9B0-70EF-11D1-B75A-00A0C90564FE),
version(1.0),
helpstring("Microsoft Shell Controls And Automation")
]
library Shell32
{
// TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
【问题讨论】:
-
是的,您可以删除文件只要您有权限这样做。在 VBA 中,您知道您可以禁用弹出窗口,在大多数(所有?)情况下,这些弹出窗口对您来说都是“是”
-
删除的方法是什么,因为我已经在类型库上转储了整个 IDL,但我什么也找不到。我不认为权限/特权是一个问题。此外,弹出窗口是由 Shell dll 而不是 Excel 引发的,它看起来与 Windows 资源管理器对话框完全一样,根本不像 Excel 对话框,因此
Application.DisplayAlerts = False很遗憾无济于事。 -
确认
Application.DisplayAlerts = False无法修复。不过感谢您的建议。 -
这将有助于显示您现有的 VBA 代码。
标签: excel vba shell com scripting