添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
威武的馒头  ·  MySQL ...·  1 年前    · 
写了一个宏,想将宏所在的工作簿另存到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")
...全文