【问题标题】:VBA copy self to other locationVBA将自己复制到其他位置
【发布时间】:2011-08-10 08:12:54
【问题描述】:

我在 VBA 中有一个 Excel 宏,我想在其中将执行宏的文件复制到另一个位置。

我试过这样

Call FileCopy(currentDir & "\" & Filename, _
otherDir & "\" & Filename)

但是我得到了一个Access restricted 异常,尽管我对所有涉及的目录都有完全的访问权限。是因为我想“复制自己”吗?这可能吗?如果没有,我可以建立一个解决方法吗?

【问题讨论】:

  • 您好,也有可能是您无法读取源文件。
  • 如何创建文件夹...请向我们展示您的代码...

标签: vba excel directory copy-paste


【解决方案1】:

尝试使用

ThisWorkbook.SaveCopyAs otherDir & "Test1"

ThisWorkbook.SaveAs otherDir & "Test2"

ThisWorkbook 是指包含您正在运行的宏的工作簿...

更新:这应该适合您创建文件夹...

确保在工具 -> 引用下添加“Microsoft Scripting Runtime”。

 Dim fso As FileSystemObject
 Set fso = New FileSystemObject
 fso.CreateFolder ("C:\test\test2")
 ThisWorkbook.SaveCopyAs "c:\test\test2\ttt.xlsm"

【讨论】:

    【解决方案2】:

    使用 FileCopy 对我也不起作用,但使用 FileSystemObject 中的 CopyFile 似乎有效。

    首先您需要向 Microsoft Scripting Runtime 添加一个参考(菜单:工具->参考),然后使用 FileSystemObject

    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    
    fso.CopyFile currentDir & "\" & Filename, otherDir & "\" & Filename, True
    ''the last parameter decides weather or not you want to overwrite existing files
    
    Set fso = Nothing
    

    替代方案:将文档保存在新的目标位置,然后将其保存回来。

    ThisWorkbook.SaveAs otherDir & "\" & Filename
    ThisWorkbook.SaveAs currentDir & "\" & Filename
    

    【讨论】:

    • 我尝试了第二种方法,但现在我得到“无法访问锁定的目录“xx”” - 是因为我的宏自己创建了这个目录吗?也许它因此被锁定?创建文件夹后如何释放它们?
    • 我使用 CreateFolderFileSystemObject - 但毕竟这不是问题。我注意到我创建的文件夹已经从另一个来源存在,因此被锁定。在我删除它并且我的宏将它创建为一个新的之后,保存工作正常。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 2011-05-06
    • 2018-09-15
    • 1970-01-01
    相关资源
    最近更新 更多