ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Excel Start-up parms (https://www.excelbanter.com/excel-programming/322517-excel-start-up-parms.html)

MrT

Excel Start-up parms
 
Does anyone know how to execute Excel and send it a value... then use
the value in a VBA macro in Excel? This would be something like a "run"
command with parms.


Chip Pearson

Excel Start-up parms
 
You can't pass custom command line parameters to Excel. The
closest you can come is to create a put the code you want to
execute in the Workbook_Open event procedure in the ThisWorkbook
code module. This procedure will be executed when the workbook
is opened.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



"MrT" wrote in message
oups.com...
Does anyone know how to execute Excel and send it a value...
then use
the value in a VBA macro in Excel? This would be something like
a "run"
command with parms.




CLR

Excel Start-up parms
 
One thing you can do is to open Excel, and then under macro control, have it
open a second workbook, and perform macro commands thereto........

Vaya con Dios,
Chuck, CABGx3



"MrT" wrote in message
oups.com...
Does anyone know how to execute Excel and send it a value... then use
the value in a VBA macro in Excel? This would be something like a "run"
command with parms.




Michel Pierron

Excel Start-up parms
 
Hi MrT,
You can test, in ThisWorkbook module of your file:
Option Explicit
Private Declare Function GetCommandLine Lib "kernel32" _
Alias "GetCommandLineA" () As Long
Private Declare Function lstrlen Lib "kernel32" Alias _
"lstrlenA" (ByVal lpString As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias _
"RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Private Sub Workbook_Open()
Dim CmdLine$, CmdArgs$(), i&, ArgNb&
CmdLine = GetCommLine
If Len(CmdLine) = 0 Then Exit Sub
i = InStr(1, CmdLine, ThisWorkbook.FullName, 1)
If i Then CmdLine = Mid$(CmdLine, 1, i - 1) Else Exit Sub
If Right$(CmdLine, 1) = """" Then i = 2 Else i = 1
CmdLine = Mid$(CmdLine, 1, Len(CmdLine) - i)
CmdLine = Mid$(CmdLine, InStr(1, CmdLine, " /e", 1) + 3, Len(CmdLine)) & "/"
Do Until Len(CmdLine) < 2
i = InStr(CmdLine, "/")
ArgNb = ArgNb + 1
ReDim Preserve CmdArgs(1 To ArgNb)
CmdArgs(ArgNb) = Mid$(CmdLine, 1, i - 1)
CmdLine = Mid$(CmdLine, i + 1, Len(CmdLine))
Loop
For i = 1 To ArgNb
CmdLine = CmdLine & "Parameter " & i & ": " & CmdArgs(i) & vbLf
Next i
MsgBox CmdLine
End Sub

Private Function GetCommLine() As String
Dim Ret&, sLen&, Buffer$
Ret = GetCommandLine
sLen = lstrlen(Ret)
If sLen Then
GetCommLine = Space$(sLen)
CopyMemory ByVal GetCommLine, ByVal Ret, sLen
End If
End Function

Examples of use:
Execute dialog box:
excel /eInfo1/Info2 c:\your file.xls
with short cut:
"C:\Program Files\Microsoft Office\Office10\EXCEL.EXE" /eInfo1/Info2
"c:\your file.xls"
with batch file:
Start "C:\Program Files\Microsoft Office\Office10\EXCEL.EXE" /eInfo1/Info2
"c:\your file.xls"

Regards,
MP

"MrT" a écrit dans le message de
oups.com...
Does anyone know how to execute Excel and send it a value... then use
the value in a VBA macro in Excel? This would be something like a "run"
command with parms.




All times are GMT +1. The time now is 07:20 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com