VBA将自己复制到其他位置

时间:2011-04-21 13:50:19

标签: vba excel-vba directory copy-paste excel

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

我试过这样的

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

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

2 个答案:

答案 0 :(得分:4)

尝试使用

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"

答案 1 :(得分:1)

使用FileCopy对我来说也不起作用,但使用FileSystemObject中的CopyFile似乎可行。

首先,您需要向Microsoft Scripting Runtime添加一个Reference(菜单:Tools-> References),然后使用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