Ms access 解压后重命名文件

Ms access 解压后重命名文件,ms-access,vba,Ms Access,Vba,我已经创建了一个子,将解压缩文件从压缩文件夹 Private Sub UnZipFile(Folder As String, FileName As String) Dim oSHApp, oSHFolder ' as object Dim sSrc, sDest ' as string Dim fName As String Set oSHApp = CreateObject("Shell.Application") sSrc = Folder &

我已经创建了一个子,将解压缩文件从压缩文件夹

Private Sub UnZipFile(Folder As String, FileName As String)

    Dim oSHApp, oSHFolder ' as object
    Dim sSrc, sDest ' as string
    Dim fName As String

    Set oSHApp = CreateObject("Shell.Application")

    sSrc = Folder & FileName
    sDest = Folder

    Set oSHFolder = oSHApp.Namespace(sSrc)
    oSHApp.Namespace(sDest).CopyHere oSHFolder.Items

End Sub
我想重新命名
osh文件夹。Items
一旦提取出来,最优化的方法是什么

编辑:文件名不是静态的,我无法预先知道它的名称


谢谢你

因为你只有一个文件,所以只需要多写一行:

Const FinalName As String = "YourFileName.txt"

<snip>

Set oSHFolder = oSHApp.Namespace(sSrc)
oSHApp.Namespace(sDest).CopyHere oSHFolder.Items
Name sDest & "\" & oSHFolder.Items.Item(0).Name As sDest & "\" & FinalName
Const FinalName As String=“YourFileName.txt”
Set oSHFolder=oSHApp.Namespace(sSrc)
oSHApp.Namespace(sDest).CopyHere-oshappolder.Items
名称sDest&“\”&oSHFolder.Items.Item(0)。名称为sDest&“\”&FinalName

因为您只有一个文件,所以只需多出一行:

Const FinalName As String = "YourFileName.txt"

<snip>

Set oSHFolder = oSHApp.Namespace(sSrc)
oSHApp.Namespace(sDest).CopyHere oSHFolder.Items
Name sDest & "\" & oSHFolder.Items.Item(0).Name As sDest & "\" & FinalName
Const FinalName As String=“YourFileName.txt”
Set oSHFolder=oSHApp.Namespace(sSrc)
oSHApp.Namespace(sDest).CopyHere-oshappolder.Items
名称sDest&“\”&oSHFolder.Items.Item(0)。名称为sDest&“\”&FinalName

重命名为什么?基于什么?文件名是常量吗?--优化了什么?如果速度快,你选择什么方法肯定无关紧要。@Andre这是压缩文件夹中的一个文件,我想把它从potato.pdf重命名为pizza.pdf。至于速度,最理想的方法是回顾@Andre的可能副本。在我发帖之前,我已经看过了这个帖子。不,它不符合我想要的。如果你看Gustav的答案,这正是我要找的“oSHFolder.Items.Items(1.Name)”是我想要的重命名为什么?基于什么?文件名是常量吗?--优化了什么?如果速度快,你选择什么方法肯定无关紧要。@Andre这是压缩文件夹中的一个文件,我想把它从potato.pdf重命名为pizza.pdf。至于速度,最理想的方法是回顾@Andre的可能副本。在我发帖之前,我已经看过了这个帖子。不,它不符合我想要的。如果你看古斯塔夫的回答,这正是我要找的“oSHFolder.Items.Items(1.Name)”是我想要的oSHFolder.Items.Items(1.Name),这是我自己做不到的,谢谢古斯塔夫:)这是oSHFolder.Items.Items(0.Name),而不是oSHFolder.Items.Items(1.Name;;);)若要自动覆盖任何提取的文件,我通常会添加一个“20”,如下所示:oSHApp.Namespace(sDest).CopyHere-oSHFolder.Items,20如果已经存在同名文件,是否有方法使此最终名称自动覆盖该文件?这就是覆盖的作用。文档是.oSHFolder.Items.Items(1.Name),是行我自己做不到的,谢谢gustavGustav:)是oSHFolder.Items.Items(0.Name),而不是oSHFolder.Items.Item(1.Name;);)若要自动覆盖任何提取的文件,我通常会添加一个“20”,如下所示:oSHApp.Namespace(sDest).CopyHere-oSHFolder.Items,20如果已经存在同名文件,是否有方法使此最终名称自动覆盖该文件?这就是覆盖的作用。文件是。