关闭复制的工作表的源文件

时间:2015-06-02 09:00:44

标签: excel vba excel-vba

我们公司的软件使用模板创建报告,并使用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。简单地说,当我尝试最终关闭源文件时,它不起作用。有什么建议,我怎么能安全关闭这两本工作簿?

0 个答案:

没有答案