[excel] VBA changing active workbook

I have a spreadsheet where in the VBA it goes off opening other spreadsheets and temporarily setting these to the active worksheet.

However, I have a loop and at the end of the first iteration I need to set the active worksheet to be the original one which started the VBA module. I cannot set a new Workbook object to open the original, because the original is still open in the background and it says its already open.

My problem is that I need to change the active Workbook to the original one, when I never had a workbook object to refer to it???

'Original workbook is active implicitly

'loop begins

'change active workbook to something else


'Need to change back to original workbook here- but don't have a VBA workbook object

'end of loop

This question is related to excel vba

The answer is


Use ThisWorkbook which will refer to the original workbook which holds the code.

Alternatively at code start

Dim Wb As Workbook
Set Wb = ActiveWorkbook

sample code that activates all open books before returning to ThisWorkbook

Sub Test()
Dim Wb As Workbook
Dim Wb2 As Workbook
Set Wb = ThisWorkbook
For Each Wb2 In Application.Workbooks
    Wb2.Activate
Next
Wb.Activate
End Sub