?
Solved

Why do I get a VBA run-time error when assigning my Excel workbook file ?

Posted on 2014-09-16
10
Medium Priority
?
229 Views
Last Modified: 2014-09-16
Hi All,

I'm trying to save a workbook in my VBA procedure but it returns a Run-time error 9 (Subscript out of range) when it interprets the Set workbook line.

Why is this ? My workbook exists. Does it have to be open first, before saving ?

Here's my code.

   Dim wbMaster As Workbook
   Dim strFileName As String
   
   strFileName = "Master.xlsx"
   Set wbMaster = Workbooks(strFileName)
   
   Application.DisplayAlerts = False
   Application.EnableEvents = False
   wbMaster.SaveAs Filename:=strFileName
   Application.EnableEvents = True
   Application.DisplayAlerts = True

Open in new window


I get the error on the "Set wbMaster..." line.

Any ideas
Toco ?
0
Comment
Question by:Tocogroup
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
  • +1
10 Comments
 
LVL 27

Expert Comment

by:MacroShadow
ID: 40324859
strFileName must include the path too.
0
 
LVL 34

Accepted Solution

by:
Norie earned 1000 total points
ID: 40324875
Do you actually have a workbook with the name 'Master.xlsx' open when you run the code?
0
 

Author Comment

by:Tocogroup
ID: 40324982
Hmmm....even when I enter the full path in strFileName I still get the same error. I've tried saving (and pointing at) the file elsewhere but the same thing happens  eg.    strFileName = "C:\Users\Toco\Master.xlsx"
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 

Author Comment

by:Tocogroup
ID: 40324984
No, the Master workbook isn't open.
0
 
LVL 12

Assisted Solution

by:James Elliott
James Elliott earned 1000 total points
ID: 40325003
You'll need something like this:

Dim wb as workbook
Dim strFileName as string

strFileName = "Master.xlsx"

set wb = workbooks.open("C:\yourPath\" & strFileName)

Open in new window

0
 
LVL 12

Expert Comment

by:James Elliott
ID: 40325004
You can then save when you close.

wb.Close True

set wb = nothing

Open in new window

0
 
LVL 34

Expert Comment

by:Norie
ID: 40325009
You can't refer to, or save, a workbook that isn't open.
0
 

Author Closing Comment

by:Tocogroup
ID: 40325024
Thank you both. You were spot on with your solutions. Hope you don't mind if I split the points but your replies appeared at the same time.
It is strange because I've used my code before thinking it was the way to 'assign' a workbook object to a variable name. However, on reflection I've most likely used it in conjunction with the On Error Resume statement and never flagged the error.

Toco
0
 

Author Comment

by:Tocogroup
ID: 40325031
You don't need the full path if the workbook resides in the same folder as the workbook module you are running the macro from.
0
 
LVL 34

Expert Comment

by:Norie
ID: 40325036
It's always best to specify the path.

If you don't VBA will look for the file in the current directory and that won't always be the same directory as the workbook you are running the code from resides.
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Freeze panes is an option within all variants of Excel to enable parts of a sheet to remain stationary when the cursor is in another part of the sheet. This is a very useful feature which is overlooked or under used.
How to get Spreadsheet Compare 2016 working with the 64 bit version of Office 2016
The viewer will learn how to create a normally distributed random variable in Excel, use a normal distribution to simulate the return on an investment over a period of years, Create a Monte Carlo simulation using a normal random variable, and calcul…
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question