[英]Subscript out of range error when copying data from a workbook to another
[英]Subscript out of range when copying range to another workbook
我正在编写一个报告系统,其中用户填写表单,表单按钮运行一个宏来保存文件,该文件的名称基于包括时间戳在内的多个字段。
所有数据也在第二张纸上,但在一行中,以便于复制到主纸上。
我正在尝试扩展保存宏以将此行复制到第二个工作簿的最后一行。
当宏从单独的工作簿运行时,这是成功的,但我一生都无法从文件本身中弄清楚如何做到这一点。
我已经三次检查了路径本身,我知道它们是正确的,因为正在创建新文件,我在代码中运行 msgbox 来检查文件名和变量也相同。
timestampedfile = Worksheets("single_line").Range("b3")
totalpath = Path & timestampedfile & ".xlsm"
ActiveWorkbook.SaveCopyAs filename:=totalpath
master_wb = "s:\blah\blah\blah.xlsx"
master_sht = "Master_Database"
contact_wb = totalpath
contact_sht = "single_line"
Workbooks.Open (master_wb)
Workbooks.Open (contact_wb)
MsgBox (totalpath)
Workbooks(contact_wb).Worksheets(contact_sht).Range("A3:AQ3").Copy Worksheets(master_wb).Sheets(master_sht).Range("A" & Rows.Count).End(xlUp)(2)
'
两个工作簿都打开了,所以我知道路径是正确的,有人可以帮忙吗?
OP的解决方案
感谢 BigBen 关于工作簿变量的评论:
使用工作簿变量,而不是按名称引用工作簿:
Dim masterWb as Workbook, then Set masterWb = Workbooks.Open("s:\blah\blah\blah.xlsx" )
。 联系人工作簿也是如此。 您也可以考虑使用工作表变量,而不是使用工作表名称。
代码更改为:
Dim master_wb As Workbook
Dim contact_wb As Workbook
Dim master_sht As Worksheet
Dim contact_sht As Worksheet
Path = "S:\blah\" & Worksheets("report").Range("c8") & "\"
filename = Worksheets("back_end_formulas").Range("e10")
timestampedfile = Worksheets("single_line").Range("b3")
totalpath = Path & timestampedfile & ".xlsm"
ActiveWorkbook.SaveCopyAs filename:=totalpath
SetAttr totalpath, vbReadOnly
Set master_wb = Workbooks.Open("S:\blah\Master_Database2.xlsx")
Set master_sht = master_wb.Sheets("Master_Database")
Set contact_wb = Workbooks.Open(totalpath)
Set contact_sht = contact_wb.Sheets("single_line")
ThisWorkbook.Activate
contact_sht.Range("A3:AQ3").Copy master_sht.Range("A" & Rows.Count).End(xlUp)(2)
master_wb.Close SaveChanges:=True
contact_wb.Close SaveChanges:=False
ActiveWorkbook.Close SaveChanges:=False
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.