Avatar of ouestque
ouestque
Flag for United States of America asked on

Excel VBA: Define current workbook in VBA

What VBA code would I need so that it will store the current workbooks name in a public variable. (Even after a "Save As...")

Here is what I am thinking of...

i.e. In a module I might have...
--->Public Current_Worksheet_Name as String

i.e. When the workbook opens I might have...
--->Current_Worksheet_Name = "Activeworkbook.name"


This is usually fine, but what if the user save's the worksheet under a different name while it is still open. i.e. user Goes to File--->Save As.... --->Name="NewWorksheetName"

In this case the public variable should update to: "NewWorksheetName"
BUT... there is not a after_SaveAs event in Excel 2003. Any ideas? hmmm...
Microsoft Excel

Avatar of undefined
Last Comment
cyberkiwi

8/22/2022 - Mon
cyberkiwi

The question is, why have a global variable that you have to keep updating?
These are already globally accessible:

ActiveWorkbook.Name    ' the currently active workbook
ThisWorkbook.Name   ' where the module lives

In what use case would you need to store that reference?
ouestque

ASKER

i.e. if I have a form that has a button, when you press the button, the form does the following...

sheet1.cells(1,1) = "Hello World"

If the user has 2 sheets open. Opens the form, then moves focus to the new worksheet, with the code above the form will copy "Hello World" to the newly focused worksheet not the original worksheet it was intended for.

My resolution to this was to change my code above so that it will refer to the worksheet that the form belongs.

i.e. ("ExcelFile1.xls").sheet1.cells(1,1)= "Hello World"

This way it will always save "Hello World" to "ExcelFile1.xls" no matter what worksheet the user is looking at.

Nonetheless, this worksheet can change names if it is saved as something different, making this code not work.
ASKER CERTIFIED SOLUTION
Rory Archibald

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
SOLUTION
cyberkiwi

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
ouestque

ASKER
rorya that is correct, but if user has both sheets open and the form is open, then the user goes to 'excelfile1.xls' and saves as... --'excelfile25314225.xls' the code will throw an error. this is because it will try to paste 'hello orld' to 'excelfile1.xls'. but 'excelfile1.xls'' is no longer open at this point. it is now called 'excelfile25314225' because user saved it as such.

my goal is to have a form that always pastes to the originating worksheet no matter what the user does to it and no matter what other workbooks have the focus. (i.e. saves under difft name.)
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
Rory Archibald

Again, no it won't, because you are referring to the sheet by codename (assuming that actually is your code; if not, this discussion is pointless) so it will always refer to the sheet in the workbook containing the code. You do not refer to the workbook name at all.
Rory Archibald

For clarity, I am referring to this:
sheet1.cells(1,1) = "Hello World"

which did not require changing.
ouestque

ASKER
Shoot! I did not mean to close this question. Please award the people involved the appropriate points.
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
ouestque

ASKER
I wanted to give points to rorya and cyberkiwi and make their comments the solution.

I did not want to make my own comment (ouestque) the solution. It was an accident.
ouestque

ASKER
Rorya was correct! Thanks for the help!
cyberkiwi

> Rorya was correct!

You mean I wasn't :)
haha.. there's a reason why Rory is MVP *and* top Excel expert this year
Your help has saved me hundreds of hours of internet surfing.
fblack61