VBA Workbook Activate method will help us to activate a specific Workbook. It is helpful when we have opened multiple workbooks and want to access a particular workbook to manipulate or read some data from the Active Workbook.

PREMIUM TEMPLATES LIMITED TIME OFFER

ON SALE80% OFF

BROWSE ALL TEMPLATES

50+ Project Management Templates Pack
Excel PowerPoint Word

VIEW DETAILS

Advanced Project Plan & Portfolio Template
Excel Template

VIEW DETAILS

Ultimate Project Management Template
Excel Template

VIEW DETAILS

20+ Excel Project Management Pack
Excel Templates

VIEW DETAILS

20+ PowerPoint Project Management Pack
PowerPoint Templates

VIEW DETAILS

10+ MS Word Project Management Pack
Word Templates

VIEW DETAILS


Activate Method Excel Workbook Object

Why we need to activate a Workbook using VBA?

When we deal with multiple workbooks and if you want to read or write to a specific workbook. You can easily activate a workbook using VBA. And do whatever tasks which you want to do.

VBA Activate Workbook – Syntax

Here is the example syntax to activate a Workbook using VBA. You can use either a Workbook name or Workbook number. When we specify the workbook number if it the order of the workbooks which you are opening.

Workbooks(“Your Workbook Name”).Activate
‘Or
Workbooks(

[Workbook Number]).Activate
‘And you can use Thisworkbook.Activate method to activate the workbook with the current procedure/macro
ThisWorkbook.Activate

VBA Activate Workbook – with Name:Example 1

Please see the below VBA codes to activate a Workbook. In this example we are activating a workbook named “Project1”.

'Workbook Activate
Sub sb_Activate_Workbook()
    Workbooks("Project1").Activate
End Sub

VBA Activate Workbook – with Number:Example 2

Please see the below VBA codes to activate a Workbook using workbook number. In this example we are activating a workbook 2 in the currently opened workbooks collection.

'Workbook Activate
Sub sb_Activate_Workbook_Number()
    Workbooks(2).Activate
End Sub

VBA Activate Workbook – ThisWorkbook:Example 2

Please see the below VBA codes to activate a currently running macro workbook. This will be very useful while dealing with the multiple workbooks.

Let’s say you have your macros in “MyProjects1.xlsm” and you have opened multiple workbooks say Book2.xlsx, Book3.xlsx, Book4.xlsx, and you can deal with any workbook and come back to your original workbook with the currently running code by just referring to ThisWorkbook Object.

'Workbook Activate
Sub sb_Activate_Workbook_ThisWorkbook()
    'Lets say you have written this macro in "MyProjects1.xlsm
    
    'And say you want to write to Book2
    Workbooks("Book2").Activate
    Sheet1.Range("A1") = 1
    
    'Now you want to write to Book3
    Workbooks("Book3").Activate
    Sheet1.Range("A1") = 1
    
    'You can come back to activate the currently macro running workbook
    ThisWorkbook.Activate 'This will activate "MyProjects1.xlsm
End Sub

VBA ActiveWorkbook Object

We can refer the currently activated Excel Workbook using Excel VBA ActiveWorkbook object. ActiveWorkbook VBA object is very usefull while automating tasks and working on currently active Excel WorkBook in the active workbook window. If you ignore the ActiveWorkbook object while refering any other object like sheet, range or chart, VBA will treat the ActiveWorkbook as the current Workbook by default. For example: Following are the two macro statements both will refer the active ActiveWorkbook.

ActiveWorkbook.ActiveSheet.Range("A1")="Some Value"
'OR ActiveSheet.Range("A1")="Some Value"
'OR Range("A1")="Some Value"

both the above statements print some value at Range A1 of Activesheet.

Set ActiveWorkbook in Excel VBA

It is very useful to refer the Active Eorkbook in Excel VBA by setting into a Variable. We can assign and set ActiveWorkbook to an object and refer at any place of the procedure. Here is the syntax to Set ActiveWorkbook in VBA.

Sub sbSetActiveWorkbookVBA()

Dim wb As Workbook
Set wb = ActiveWorkbook
Set ws = wb.ActiveSheet

ws.Range("A1") = "Some Value"
End Sub

This code will print the some value at Range A1 of ActiveWorkbook.

VBA ThisWorkbook Object in Excel VBA

While automating the Excel Tasks, we usually have all our macros in one Excel Workbook (say Book1.xlsm) and deal with with multiple workbboks and files. We activate different workbooks to access the file objects and do some activity. For example, we activate Book12.xlsx to enter some data, we may open and format some ranges. While accessing the different objects in different workbooks, we generally activate the Workbook and do perform some operation with Excel VBA Macros.

What if you need to wok on the same workbook(Book1.xlsm) where all your macros are written. You do not required to activate and use VBA ActiveWorokbook object. Instead, you can use VBA Thisworkbook object to deal with your macro file.

Here is the simple macro to insert some values in ThisWorkbook using VBA.

ThisWorkbook.Sheets(1).Range("A1") = "Some Value"

Set ThisWorkbook in Excel VBA

We can also set ThisWorkbook to a variable using VBA and access it whereever it is required. For example the following macro will do print the some value at A1 of Sheet 1 of ThisWorkbook.

Sub sbThisWorkbookVBA()

Dim wb As Workbook
Set wb = ThisWorkbook
Set ws = wb.Sheets(1)
ws.Range("A1") = "Some Value"
End Sub

VBA Activate Workbook – Best Approach

Note: Always better to use the Workbook name, instead of workbook number. The best is to assign the workbook to an object and then do whatever task you want to do with that particular Workbook object.

When working with multiple workbooks, you should refer the workbook with exact workbook name to correctly update your data into target workbook. Create workbook object and refer the workbook with the object whenever you require.

Let us see the another example to understand the accessing the workbooks using objects. You do not need to activate workbook to deal with any workbook.

Sub sb_Activate_Workbook_Object()
'Declare the objects here
    Dim wbkMain, wbk_A, wbk_B, wbk_C
    
'Set the Workbooks to Objects
    Set wbMain = ThisWorkbook
    Set wbk_A = Workbooks("Book2")
    Set wbk_B = Workbooks("Book3")
    Set wbk_C = Workbooks("Book4")

'Now deal with your workbooks
    wbk_A.Sheets(1).Range("A1") = wbkMain.Sheet1.Range("A1")

End Sub

VBA Activate Workbook – Instructions

Please follow the below step by step instructions to execute the above mentioned VBA macros or codes:

  1. Open an Excel Workbook
  2. Press Alt+F11 to Open VBA Editor
  3. Insert a Module from Insert Menu
  4. Copy the above code for activating a range and Paste in the code window(VBA Editor)
  5. Save the file as macro enabled workbook
  6. Press ‘F5’ to run it or Keep Pressing ‘F8’ to debug the code line by line.
LIMITED TIME OFFER - Get it Now!
Advanced Project Plan Excel Template

 
Related Resource External VBA Reference