我正在使用VBA的Microsoft Shell控件和自动化COM库。我有一个zip文件,我正在将文件复制到zip文件中。问题是文件已经存在并且它会抛出一个对话框,上面写着"在这个位置已经有一个同名的文件你想要a)复制和替换或b)不要复制和#34 ;.我想以编程方式说复制和替换(覆盖!)。
我认为.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}
答案 0 :(得分:1)
我的首选答案是使用MoveHere方法在添加之前将旧的方法移出。这样就不会抛出任何对话框。谢谢大家。
答案 1 :(得分:0)
以下是使用Shell从zip中删除文件的方法:
Sub DeleteFromZip()
Dim fldr, zpath, itm, vrbs, vrb
zpath = "C:\_stuff\test\test.zip"
Set fldr = CreateObject("Shell.Application").Namespace(zpath)
For Each itm In fldr.items
If itm.Name = "IMG_0000322_2014.03.11.jpg" Then
itm.invokeverb "Delete"
Exit For
End If
Next itm
End Sub
这确实引发了一个确认对话框 - 请参阅此链接以了解如何避免它: