Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:解压缩后无法覆盖文件_Vba_Excel_Unzip_Overwrite - Fatal编程技术网

Excel VBA:解压缩后无法覆盖文件

Excel VBA:解压缩后无法覆盖文件,vba,excel,unzip,overwrite,Vba,Excel,Unzip,Overwrite,我从一个随机论坛上找到了一个非常简单的解压码,并对其进行了编辑以满足我的需要 Sub ProcessFile() Dim SourcePath As String, Filename As String SourcePath = "R:\DataStore\002_BhavCopy\Zipped\" Filename = Dir(SourcePath) Do While Len(Filename) > 0 If Right(Filena

我从一个随机论坛上找到了一个非常简单的解压码,并对其进行了编辑以满足我的需要

Sub ProcessFile()
    Dim SourcePath As String, Filename As String

    SourcePath = "R:\DataStore\002_BhavCopy\Zipped\"

    Filename = Dir(SourcePath)

    Do While Len(Filename) > 0
        If Right(Filename, 3) = "zip" Then
        Call UnZipFile(SourcePath, Filename)
        Kill SourcePath & Filename
        End If
        Filename = Dir()
    Loop
End Sub

Sub UnZipFile(strTargetPath As String, Fname As String)
    Dim oApp As Object
    Dim FileNameFolder As Variant

    If Right(strTargetPath, 1) <> Application.PathSeparator Then
        strTargetPath = strTargetPath & Application.PathSeparator
    End If

    FileNameFolder = strTargetPath
    dPath = "R:\DataStore\002_BhavCopy\UnZipped\"
    Set oApp = CreateObject("Shell.Application")
    On Error Resume Next
    oApp.Namespace(dPath).CopyHere oApp.Namespace(FileNameFolder & Fname).Items
    On Error GoTo 0
End Sub
子进程文件()
Dim SourcePath为字符串,文件名为字符串
SourcePath=“R:\DataStore\002\u BhavCopy\Zipped\”
Filename=Dir(源路径)
当Len(文件名)>0时执行
如果正确(文件名,3)=“zip”,则
调用UnZipFile(源路径,文件名)
终止源路径和文件名
如果结束
Filename=Dir()
环
端接头
子UnZipFile(strTargetPath作为字符串,Fname作为字符串)
作为对象的Dim oApp
Dim FileNameFolder作为变量
如果正确(strTargetPath,1)Application.PathSeparator,则
strTargetPath=strTargetPath&Application.PathSeparator
如果结束
FileNameFolder=strTargetPath
dPath=“R:\DataStore\002\u BhavCopy\unzip\”
设置oApp=CreateObject(“Shell.Application”)
出错时继续下一步
oApp.Namespace(dPath).CopyHere oApp.Namespace(FileNameFolder&Fname).Items
错误转到0
端接头
解压文件后,文件将被放置在
dPath
文件夹中

这里的问题是,如果
dPath
文件夹中已经存在同名文件,则windows 7会显示一个带有覆盖/取消等的弹出窗口。。。如何禁用此弹出窗口并覆盖已存在的文件? 我也尝试过按照语法中的指定应用voptions 16,但这也不起作用。。。
任何帮助都将不胜感激……

如果您无法使用这些选项,则可以首先在zip存档上使用
Dir()
,以确定是否存在任何冲突,并在解压缩之前从文件夹中删除冲突的文件。参见(例如)示例2:蒂姆!!!我发布了一个答案:D@Aditya:是的,不幸的是,这对我也不起作用。我做了很多研究,但没有找到一个明确的答案,所以我求助于一种变通方法。i、 e如果文件存在,请删除它,然后复制该文件。谢谢@Siddharth我按照Tim说的方式想出了一个解决方案:)下面是我的项目(仍在建设中)的链接,供前来寻找解决方案的人使用:我目前正陷于一种情况,您认为使用Microsoft.XMLHTTP对象可能吗?