- Excel VBA - Basics (24)
- VBA User Forms (21)
- Excel VBA - pivot tables (9)
- Excel VBA - charts (6)
- VBA - advanced (13)
- VBA - working with files (11)
- VBA - linking applications (10)
- VBA - working with Outlook (14)
- Built-in VBA functions (9)
- VBA - working with data (55)
- VBA - scraping websites (24)
- VBA - working with shapes (3)
- VBA - classes and structures (6)
VBA - WORKING WITH DATA VIDEOS▼
- Excel VBA Part 30 - Querying a Database with ADO
- Excel VBA Part 31 - Modifying Data with ADO Recordsets
- Excel VBA Part 32 - Executing SQL Commands with ADO
- Excel VBA Part 56.1 - Connect to SQL Server using ADO
- Excel VBA Part 56.2 - Get Data from SQL Server with ADO Recordsets
- Excel VBA Part 56.3 - Read and Execute SQL Query Files
- Excel VBA Part 56.4 - Return Multiple Result Sets from SQL Queries
- Excel VBA Part 56.5 - Basic ADO Commands with SQL Server
- Excel VBA Part 56.6 - ADO Commands and Parameters
- Excel VBA Part 56.7 - ADO Commands and Stored Procedures
- Excel VBA Part 58.1 - SQL for Excel Files - Basic Select Statements
- Excel VBA Part 58.2 - SQL for Excel Files - Sorting Rows in a Query
- Excel VBA Part 58.3 - SQL for Excel Files - Selecting the Top N Rows
- Excel VBA Part 58.4 - SQL for Excel Files - Selecting All or Distinct Rows
- Excel VBA Part 58.5 - SQL for Excel Files - Basic Criteria in Queries
- Excel VBA Part 58.6 - SQL for Excel Files - Text Criteria and the Like Operator
- Excel VBA Part 58.7 - SQL for Excel Files - Basic Calculated Columns
- Excel VBA Part 58.8 - SQL for Excel Files - Conditional Functions
- Excel VBA Part 58.9 - SQL for Excel Files - Nulls in Expressions
- Excel VBA Part 58.10 - SQL for Excel Files - Date Expressions
- Excel VBA Part 58.11 - SQL for Excel Files - Text Expressions
- Excel VBA Part 58.12 - SQL for Excel Files - Aggregation Functions
- Excel VBA Part 58.13 - SQL for Excel Files - Grouping Rows
- Excel VBA Part 58.14 - SQL for Excel Files - Criteria in the Having Clause
- Excel VBA Part 58.15 - SQL for Excel Files - Pivoting Data (Crosstab Queries)
- Excel VBA Part 58.16 - SQL for Excel Files - Basic Union Queries
- Excel VBA Part 58.17 - SQL for Excel Files - Union Queries with Total Rows
- Excel VBA Part 58.18 - SQL for Excel Files - Union Queries from Multiple Files
- Excel VBA Part 58.19 - SQL for Excel Files - Inner Joins
- Excel VBA Part 58.20 - SQL for Excel Files - Outer Joins
- Excel VBA Part 58.21 - SQL for Excel Files - Constructing Full Outer Joins
- Excel VBA Part 58.22 - SQL for Excel Files - Join Worksheets from Multiple Files
- Excel VBA Part 58.23 - SQL for Excel Files - Merge Worksheets Side by Side
- Excel VBA Part 58.24 - SQL for Excel Files - Consolidate Worksheets using Derived Tables
- Excel VBA Part 58.25 - SQL for Excel Files - Basic Subqueries
- Excel VBA Part 58.26 - SQL for Excel Files - Nested Subqueries
- Excel VBA Part 58.27 - SQL for Excel Files - Correlated Subqueries
- Excel VBA Part 58.28 - SQL for Excel Files - Inserting Data into an Existing Sheet
- Excel VBA Part 58.29 - SQL for Excel Files - Selecting Data into a New Sheet or Workbook
- Excel VBA Part 58.30 - SQL for Excel Files - Updating Existing Data
- Excel VBA Part 58.31 - SQL for Excel Files - Split a Table into Separate Sheets
- How do I pass Japanese text to a stored procedure parameter in VBA?
- How do I get data from a closed Excel file using VBA?
- How do I loop through worksheets in a closed workbook with VBA?
- How do I get data from multiple closed Excel files using VBA?
- How do I get data from multiple workbooks with one query in VBA?
- How do I loop through worksheets in multiple closed workbooks in VBA?
- How do I populate a listbox using an ADO recordset in VBA?
- How do I get the column names from an ADO recordset?
- Excel VBA - How do I get data from a CSV file using ActiveX Data Objects
- How do I add a filename to the results of an ADODB recordset?
- How do I populate an array with an ADODB recordset?
- How do I count the rows in an ADODB recordset?
- How do I find the data type of a column in an ADODB recordset?
- How do I refer to a field name with a dot in an ADO SQL query?
VBA - working with data videos | How do I loop through worksheets in a closed workbook with VBA?
Posted by Andrew Gould on 09 April 2021
Looping through the collection of worksheets in a workbook is a standard technique in Excel VBA and easy to accomplish when the workbook is open. Did you know that you can do the same thing when the workbook is closed? This video explains how to do this using the ActiveX Data Objects library. You'll learn how to create a connection object and construct a connection string to talk to the closed Excel file. You'll learn how to query the schema of the workbook to return a list of the worksheets and loop through this list to read the name of each sheet. You'll also learn how to create a recordset object and populate it with data using an SQL Select statement. As a bonus you'll learn about the SQL Union All statement to select data from multiple tables at the same time and how to add criteria to a query using the Where clause.
This video has the following accompanying files:
|Loop Through Worksheets in a Closed Workbook.xlsm||Excel workbook with macros|
|Movies By Year.xlsx||Excel workbook|
Click to download a zipped copy of the above files.
There are no exercises for this video.
Making a video bigger
You can increase the size of your video to make it fill the screen like this:
Play your video (the icons shown won't appear until you do), then click on the full screen icon which appears as shown at its bottom right-hand corner.
When you've finished viewing a video in full screen mode, just press the Esc key to return to normal view.
Improving the quality of a video
To improve the quality of a video, first click on the Settings icon:
Make sure you're playing your video so that the icons shown appear, then click on this gear icon at the bottom right-hand corner.
Choose to change the video quality:
Click on Quality as shown to bring up the submenu.
The higher the number you choose, the better will be your video quality (but the slower the connection speed):
Don't choose the HD option unless you have a fast enough connection speed to support it!
Is your Wise Owl speaking too slowly (or too quickly)? You can also use the Settings menu above to change your playback speed.
I started following you on YouTube, but finally found your site. I really enjoy what you've been able to produce so far. It's helped me a ton in my current role.
My question is...how do I reference an excel table in the sql select statement part of the code? I also tried a name range, but was unsuccessful. Any help would be appreciated!
Hi there, what an Excel-lent user name!
Sadly you can't reference Excel table names in an SQL query, but you can reference a range name like so:
SELECT * FROM [MyRangeName]
Make sure not to use the $ sign as you're not referencing a worksheet.
You might find this YouTube playlist useful https://youtube.com/playlist?list=PLNIs-AWhQzckUd5i0E1xeSFeBAonYIurK Part 58.1 includes information on referencing range names.
I hope that helps!
Thank you very much! I'm also trying to use an input box result in my sql query. It's a number, but when I step through the process my input box value shows it at "123456789". Would the quotation cause an issue in the query?
When you say that the value is showing with quotes do you mean in the Locals window? A VBA inputbox always returns a string value so it will always be displayed with " " around it in tools like the Locals window. The quotes won't be included if you concatenate that value into your query string (I assume that's what you're trying to do?). Remember that you can always print your SQL string to the Immediate window to check that it's correct before you run it.
Just in case it helps, we have a module on working with VBA input boxes which you can find here.