EXCEL VBA的SAVEAS问题

写了一个宏,想将宏所在的工作簿另存到D:盘的文件夹下,然后打开宏所在工作簿F盘的注销清单1.xls,但在执行开注销清单1.xls的时候报错,说在D:盘TEMP目录下找不到注销清单1的文件,现在想问
在VBA中用SAVEAS另存为就会把宏执行权转给另存的那个文件吗,不然的话,为什么另存后thisworkbook一直指向这个文件,而且用ACTIVITE激活宏所在的文件就出现下标越界错误,是不是另存为后宏所在工作簿就被关闭了呢,请问有什么办法能避免或是将宏所在原文件激活呢?代码如下
第一次写的代码,在第三行就出错,说找不到这个文件,说明ThisWorkbook.Path已经不是F盘了。
ThisWorkbook.SaveAs ("d:\temp\temp全省站点名单1.xls")
ThisWorkbook.Activate
Workbooks.Open Filename:=ThisWorkbook.Path & "\注销清单1.xls" '打开文件
Workbooks("注销清单1.xls").SaveAs ("d:\temp\temp注销清单1.xls")

第二次写的代码,也是在一个网站上的高手建议的,但发现一关闭当前工作薄,这句后面的都不执行了,就像是用END SUB一样
Application.ScreenUpdating = False
ThisWorkbook.SaveAs ("d:\temp\temp全省站点名单1.xls")
MsgBox ThisWorkbook.FullName ‘这句执行显示仍是上面全省站点名单1
ThisWorkbook.Close ‘这句一执行,啥也没有啦!
Workbooks.Open Filename:=ThisWorkbook.Path & "\注销清单1.xls" '打开文件
Workbooks("注销清单1.xls").SaveAs ("d:\temp\temp注销清单1.xls")
ThisWorkbook.Activate
For cz = 1 To Sheet15.Range("a65536").End(xlUp).Row

现在改的代码,变了个思路,想一开始就把文件路径保存一下,以后都用这个路径来打开文件等,这段代码能执行完,但发现后续整个程序做的操作全都是在另存为后的TEMP全省站点名单1里,也就是说只要另存了文件,宏就转到了这个文件下执行,所有的thisworkbook全都指向这个新文件。
Dim ylj As String
ylj = ThisWorkbook.Path
ThisWorkbook.SaveAs ("d:\temp\temp全省站点名单1.xls")
FileCopy ylj & "\注销清单1.xls", "d:\temp\temp注销清单1.xls"
Workbooks.Open Filename:=ylj & "\站点名单1.xls"
Workbooks(ylj & "\站点名单1.xls").Activate ' 这句执行出错,下标越界
MsgBox ThisWorkbook.FullName

Saveas 是把当前文件另存为另一个文件,所以"当前"文件就变成目标文件了,想要做一个备份,而真正的保留当前文件,请使用 SaveCopyAs,这样才可以达到楼主的目的...
即:
把 ThisWorkbook.SaveAs ("d:\temp\temp全省站点名单1.xls") 改为:
ThisWorkbook.SaveCopyAs ("d:\temp\temp全省站点名单1.xls")
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-24
Workbooks(ylj & "\站点名单1.xls").Activate

改为:Workbooks("站点名单1.xls").Activate追问

先感谢一下你这么快的回答,改动完执行是没出错,但是站点名单1.xls仍没激活,MsgBox ThisWorkbook.FullName执行完仍显示d:\temp\temp全省站点名单1.xls,之后执行的一切操作仍在这个文件里执行,我的宏在站点名单1.xls里,想操作的也是站点名单1.xls,请指教!

追答

如果你saveas 后不想让目标转为saveas后的目标那么你设置createbackup参数为true即可

ThisWorkbook.SaveAs "d:\temp\temp全省站点名单1.xls", CreateBackup:=True

追问

CreateBackup:=True仍然不行,只会在文件夹里多一个temp全省站点名单1的备份.xlk的备份文件,仍然没法转回宏所在工作簿

相似回答