我们公司的软件使用模板创建报告,并使用VBA脚本填充数据。我必须修改它,因此在使用当前数据在一个工作簿中填充三个工作表之后,它必须从存储在另一个文件中的先前创建的报告中复制两个工作表。我修改了代码,已经存在,并添加了我的部分。我只是打开源代码工作簿并使用现有代码来复制我的值。
'this code is in REPORT_3.xls file
Sub Init_Copy_Sheets()
ReDim Copy_Sheets(5)
Dim x As Workbook
Dim y As Workbook
Dim strFilePath1 As String
Dim strFilePath2 As String
strFilePath1 = "PREVIOUS_REPORT_1.xls"
strFilePath2 = "PREVIOUS_REPORT_2.xls"
Set x = Workbooks.Open(strFilePath1)
Set y = Workbooks.Open(strFilePath2)
Set Copy_Sheets(1).Worksheet = ThisWorkbook.Sheets("report_sheet_1")
With ThisWorkbook.Sheets("report_sheet_1")
Set Copy_Sheets(1).Range = .Range("A1:O64")
End With
Copy_Sheets(1).Name = "report_sheet_1"
'same code for sheets report_sheet_2 and report_sheet_3
'MY CODE STARTS HERE
Set Copy_Sheets(4).Worksheet = x.Sheets("previous_report1_sheet_1")
With x.Sheets("previous_report1_sheet_1")
Set Copy_Sheets(4).Range = .Range("A1:U35")
End With
Copy_Sheets(4).Name = "previous_report1_sheet_1"
Set Copy_Sheets(5).Worksheet = y.Sheets("previous_report2_sheet_1")
With y.Sheets("previous_report2_sheet_1")
Set Copy_Sheets(5).Range = .Range("A1:U30")
End With
Copy_Sheets(5).Name = "previous_report2_sheet_1"
'MY CODE ENDS HERE
End Sub
它工作正常并将所需的工作表复制到新报告中,但它只能在这样的情况下工作,并且会使之前的报告保持打开状态。当我想要关闭我已复制工作表的先前报告时,我添加以下两行:
x.Close False
y.Close False
End Sub
它只会添加到我的工作簿表 previous_report1_sheet_1 为空(它不应为空),然后将一个完全空的工作表添加到第一个,默认名称为 Sheet1 位置并打开PREVIOUS_REPORT_1.xls。看来,它甚至没有打开PREVIOUS_REPORT_2.xls。简单地说,当我尝试最终关闭源文件时,它不起作用。有什么建议,我怎么能安全关闭这两本工作簿?