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
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
Source: Stackoverflow.com