Determine If A File Was Specified When Starting Excel

M

Michael H

Is there a property that I can read to find out if a file was specified to
open when starting Excel? In other words, if Excel was opened via the Start
menu (so the application opens, but no file is opened), or if Excel was
opened by double-clicking on an .xls file (so the application opens, then the
specified file opens).

The reason I would like to know is that I have created an .xls file, located
in my XLSTART folder, that provides some additional functionality not native
to Excel. When this file is not present, and I open Excel via the Start
menu, a blank worksheet is created. When the file is present, and I open
Excel via the Start menu, a blank worksheet is not created. I would like to
have the blank worksheet created when my file is present in the XLSTART
folder.

I know I can make this happen by placing the line
"Application.Workbooks.Add" in the "Workbook_Open" Application Event of the
file in XLSTART, but when Excel is opened by double-clicking on an .xls file,
a blank workbook is created as well, and I would prefer that not to happen.
If I could get an answer to my question, I would be able to add a workbook
only if Excel was opened without specifying a file. I cannot do this by
counting the number of open workbooks, because my file in XLSTART loads
before any other .xls file that may have been opened.

I hope I have described this clearly. If not, please let me know. Thanks
in advance for any help that may be forthcoming.

-Michael
 
L

Leith Ross

Is there a property that I can read to find out if a file was specified to
open when starting Excel? In other words, if Excel was opened via the Start
menu (so the application opens, but no file is opened), or if Excel was
opened by double-clicking on an .xls file (so the application opens, then the
specified file opens).

The reason I would like to know is that I have created an .xls file, located
in my XLSTART folder, that provides some additional functionality not native
to Excel. When this file is not present, and I open Excel via the Start
menu, a blank worksheet is created. When the file is present, and I open
Excel via the Start menu, a blank worksheet is not created. I would like to
have the blank worksheet created when my file is present in the XLSTART
folder.

I know I can make this happen by placing the line
"Application.Workbooks.Add" in the "Workbook_Open" Application Event of the
file in XLSTART, but when Excel is opened by double-clicking on an .xls file,
a blank workbook is created as well, and I would prefer that not to happen.
If I could get an answer to my question, I would be able to add a workbook
only if Excel was opened without specifying a file. I cannot do this by
counting the number of open workbooks, because my file in XLSTART loads
before any other .xls file that may have been opened.

I hope I have described this clearly. If not, please let me know. Thanks
in advance for any help that may be forthcoming.

-Michael

Hello Michael,

To control how Excel opens have look at this article, it may help
answer your question.

http://support.microsoft.com/kb/291288

Sincerely,
Leith Ross
 
M

Michael H

Leith and NickHK,

Thanks very much for your responses.

Based on the code from the link provided by NickHK, I created the following
function:

Declare Function GetCommandLineA Lib "Kernel32" () As String

Public Function FileParameter() As Boolean

Dim strCmdLine As String

strCmdLine = GetCommandLineA
strCmdLine = Mid(strCmdLine, 1, 255)

If InStr(1, strCmdLine, "/e") <> 0 Then
FileParameter = True
Else
FileParameter = False
End If

End Function


This worked, but sometimes when opening a file directly in Excel, it would
crash with a "Microsoft Excel has encountered a problem and needs to close"
error. When I put a stop in the code so as to step through it, the crash
does not occur. I am unable to find the cause of this issue so far.

After a bit more searching for info on "Command Line", I found the following:
http://groups.google.co.uk/group/mi...+group:*excel*&rnum=13&hl=en#a4ca75a8220396ce


I managed to use the code in Post# 6 to accomplish what I needed:

Private Declare Function GetCommandLine Lib "kernel32" Alias
"GetCommandLineA" () As Long

Select Case GetCommandLine()
Case 1385360
'No file specified. Add new workbook.
Application.Workbooks.Add
Case 1385376
'File specified. Do nothing
End Select

I need to do more testing, because I'm not sure yet if there are any other
possible values for the results of GetCommandLine. However, it works well so
far.

Once again, thanks to both of you for the responses, which helped to put me
on the right track.

-Michael
 

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