VBA:Zip文件输出重命名

时间:2017-06-24 13:52:49

标签: vba excel-vba access-vba excel

我在解压缩时尝试重命名文件的输出。我已经尝试重命名为test.xls但是它会抛出一个对象变量而不是设置错误。除了在文件夹中的所有文件上扫描.datecreated之外,还有其他方法吗?如果有办法在解压缩时重命名文件,那将是最好的。

Set oApp = CreateObject("Shell.Application")
    oApp.NameSpace("C:\Users\**\Downloads\TempFolder\test.xls").CopyHere oApp.NameSpace("C:\Users\**\Downloads\TempFolder\testzip.zip").Items
Set oApp = Nothing

1 个答案:

答案 0 :(得分:3)

CopyHere方法仅对文件夹对象有效(这包括压缩时的zip文件),而不适用于常规文件。因此错误信息。

请参阅MSDNhere

我会将zip解压缩到一个保证为空的文件夹 然后将(单个)文件移动到您的实际目标文件夹,并在此过程中重命名。

Const Zipfile = "C:\Users\**\Downloads\TempFolder\testzip.zip"
Const EmptyFolder = "C:\Users\**\Downloads\EmptyFolder"
Const TargetFolder = "C:\Users\**\Target"
Dim strFile As String

Set oApp = CreateObject("Shell.Application")
' Unzip into empty folder
oApp.NameSpace(EmptyFolder).CopyHere oApp.NameSpace(Zipfile).Items
Set oApp = Nothing

' Get first and only file
strFile = Dir(EmptyFolder & "\*.*")
' Move and rename
Name EmptyFolder & "\" & strFile As TargetFolder & "\test.xls"