Code to close workbook

M

Mason

I have code that opens an excel file. Can I have an Open event on the new
opened Excel file that closes the original file?

So workbookA code opens workbookB. The open event in workbookB closes
workbookA.
But I won't know the name of workbookA, and other workbooks may be open also
and we don't want them closed.
 
R

Ron de Bruin

Hi Mason

You can close workbookA in the same macro that open workbookAB

After you open workbookB use this to close workbookA
ThisWorkbook.Close False 'not save

or
ThisWorkbook.Close False 'save the file
 
B

Bob Phillips

Mason,

You could set an environment variable before closing the first, and get it
in the second. Here's a demo

Private Declare Function SetEnvironmentVariable Lib "kernel32" _
Alias "SetEnvironmentVariableA" _
(ByVal lpName As String, _
ByVal lpValue As String) As Long


Sub xx()

SetEnvironmentVariable "BookName", Thisworkbook.Name


Private Sub Workbook_Open()
Workbooks.Close(GetEnvironmentVar("BookName")
End Sub

Function GetEnvironmentVar(Name As String) As String
GetEnvironmentVar = String(255, 0)
GetEnvironmentVariable Name, GetEnvironmentVar, Len(GetEnvironmentVar)
GetEnvironmentVar = TrimNull(GetEnvironmentVar)
End Function

Private Function TrimNull(item As String)
Dim iPos As Long
iPos = InStr(item, vbNullChar)
TrimNull = IIf(iPos > 0, Left$(item, iPos - 1), item)
End Function






--

HTH

RP
(remove nothere from the email address if mailing direct)
 
M

Mason

Thank you. Is it safe to assume that the 2 functions also belong in the
'workbook ' code section along with the open event?
 
B

Bob Phillips

Oh no, the set environment variable must be in the other workbook, before
you execute the code to open workbook B.

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
M

Mason

Gotcha. But the 2 functions?

Bob Phillips said:
Oh no, the set environment variable must be in the other workbook, before
you execute the code to open workbook B.

--

HTH

RP
(remove nothere from the email address if mailing direct)


get
 
B

Bob Phillips

Mason,

Sorry, I was mis-reading your question :).

Yes, the two functions can go in the same module as the Workbook_Open, the
ThisWorkbook module.

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
S

Steph

Much obliged. I really appreciate the help.

Bob Phillips said:
Mason,

Sorry, I was mis-reading your question :).

Yes, the two functions can go in the same module as the Workbook_Open, the
ThisWorkbook module.

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
B

Bob Phillips

Uh? What happened to Mason <vbg>?

Bob

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
S

Steph

Hi Bob. Co-worker...viewed you rmessage and replied from my laptop during a
meeting! Sorry for the confusion!

-Steph
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top