简体   繁体   中英

Excel VBA - Close workbook

I am importing a worksheet from another workbook to my current workbook. After I complete importing the worksheet, I want to close that other workbook. The code I am using gives the error Run-time error 9': Subscript out of range .

Sub ImportWorksheet(MyPath As String, wbName As String)

ControlFile = ActiveWorkbook.Name
Workbooks.Open Filename:=MyPath
Sheets(1).Copy After:=Workbooks(ControlFile).Sheets(1)
ActiveSheet.Name = wbName
Workbooks(MyPath).Close SaveChanges:=False
Windows(ControlFile).Activate

End Sub

I also tried using

Windows(MyPath).Activate
ActiveWorkbook.Close SaveChanges:=False

But I get the same error.

Since Open method of Workbooks object returns a Workbook object you can reference the opened workbook:

Sub ImportWorksheet(MyPath As String, wbName As String)
    ControlFile = ActiveWorkbook.Name
    With Workbooks.Open(Filename:=MyPath)
        .Sheets(1).Copy After:=Workbooks(ControlFile).Sheets(1)
        .Sheets(2).Name = wbName
        .Close SaveChanges:=False 
    End With 
End Sub

I like to assign variable, it removes any confusion.

Sub ImportWorksheet(MyPath As String, wbName As String)


Dim Owb As Workbook
Dim Nwb As Workbook

Set Owb = ThisWorkbook
Set Nwb = Workbooks.Open(Filename:=MyPath)

Nwb.Sheets(1).Copy after:=Owb.Sheets(1)
Owb.Sheets(2).Name = wbName

Nwb.Close False
Owb.Activate

End Sub
Workbooks(strTargetFileName).Close SaveChanges:=False

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM