我在VBA中有一个Excel-Macro,我想将文件从执行宏的位置复制到另一个位置。
我试过这样的
Call FileCopy(currentDir & "\" & Filename, _
otherDir & "\" & Filename)
但是我得到了Access restricted
异常,尽管我可以完全访问所涉及的所有目录。是因为我想“复制自己”吗?这可能吗?如果没有,我可以建立一个解决方法吗?
答案 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