杀死命令删除错误的文件i

时间:2014-04-25 12:55:28

标签: vba file kill delete-file

在Access VBA中,我有一个程序,我已经整理了这个:

  1. 允许用户选择zip文件
  2. 将zip文件中的所有文件解压缩到同一目录(在此处 特定的用例实例,它总是从中提取Excel文件 Zip文件,永不改变,并始终使用相同的密码)
  3. 然后我希望代码在解压缩后删除Zip文件 .xls文件。
  4. 除删除文件部分外,一切都很好用。问题是当我告诉它删除“FileName.Zip”时,它正在删除“FileName.Zip”和“FileName.xls”

    有没有办法确保 kill 命令只删除我要删除的内容?我以前在各种场合使用它,之前从未发生过这种情况。

    以下是我正在使用的代码:

    Dim fd As FileDialog
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim i As Variant
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tblProjectPath")
    
    Set fd = FileDialog(msoFileDialogFilePicker)
    fd.AllowMultiSelect = True
    fd.Title = "Select TOC Return File(s) to process"
    fd.InitialFileName = rs.Fields("ProjectPath") & "\FilingReports\*.zip"
    fd.Show
    
    For Each i In fd.SelectedItems
        'Debug.Print i
        Debug.Print '------------------------'
        Debug.Print i
        Unzip (i) 'The bit calling the command line unzip utility to unzip the file - just telling it to extract all files to the current folder.
        Debug.Print i
        'Kill i
        'had to take out the kill bit, b/c it was deleting both the .zip and .xls files which is not desired nor expected
        If InStr(i, ".zip") Then
            Kill i 'Tried to specify only .zip files even though think I shouldn't need to, but it's still deleting .xls files
        End If
    Next i 
    

    编辑:添加解压缩代码以发布: 解压缩代码:

    Sub Unzip(Path As String)
        Dim strUnzip As String
        Dim QU As String 'quotation mark
        QU = Chr(34)
    
        strUnzip = QU & "c:\program files (x86)\winzip\wzunzip" & QU & " -s" & _
            "ZipPassword " & _
            Path & " " '& _
    
        Call Shell(strUnzip)
    
    End Sub
    

1 个答案:

答案 0 :(得分:0)

此时,我真的不认为会有“真正的”答案。但是,我会发布我决定用特定进程做的事情,无论如何我正在编写这段代码。

我将使用文件夹结构来分割文件: 1.放置zip文件 2.将文件解压缩到第二个文件夹 3.在第二个文件夹中处理Excel文件后,移至第三个“完整”文件夹。

这将解决删除错误文件位。

此外,问题的原因似乎与上面的解压缩代码中对WinZip命令行解压缩实用程序(wzunzip)的调用有关,或者与工具本身有关。我想也许是b / c这个工具问我是否要覆盖现有文件,但事实并非如此,b / c在没有文件要覆盖时我遇到了同样的问题。

无论如何,我正试图在此时关闭这个。感谢Wayne G. Dunn对此的帮助。