Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1180to1184
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kommandozeile aus Excelaufruf in Makro auswerten

Kommandozeile aus Excelaufruf in Makro auswerten
heinzs
Hallo alle zusammen,
ist es möglich eine Kommandozeile beim programmaufruf in einem VBA-Makro weiterzuverarbeiten?
Beispiel:
exel.exe c:\test.xlsm /test
soll den Parameter /test in einem VBA Makro in eine Variable übertragen.
DANKE für Hilfe!
Heinz

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Kommandozeile aus Excelaufruf in Makro auswerten
20.10.2010 18:12:03
Nepumuk
Hallo,
na einfach so:
Option Explicit

Private Declare Function GetCommandLine Lib "kernel32.dll" Alias "GetCommandLineA" () As Long
Private Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" ( _
    ByVal lpString As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
    ByRef pDst As Any, _
    ByRef pSrc As Any, _
    ByVal ByteLen As Long)

Private Sub Workbook_Open()
    
    Dim strCmdLine As String, strArguments() As String
    Dim lngArgumentsCount As Long, lngIndex As Long
    Dim lngReturn As Long, lngLength As Long
    
    lngReturn = GetCommandLine
    lngLength = lstrlen(lngReturn)
    
    If Cbool(lngLength) Then
        strCmdLine = Space$(lngLength)
        Call CopyMemory(ByVal strCmdLine, ByVal lngReturn, lngLength)
    End If
    
    strCmdLine = Left$(strCmdLine, InStr(strCmdLine & vbNullChar, vbNullChar) - 1)
    
    If Cbool(InStr(strCmdLine, "/e")) Then
        
        If Len(strCmdLine) - InStr(strCmdLine, "/e") > 1 Then
            
            strCmdLine = Mid$(strCmdLine, InStr(strCmdLine, "/e") + 2)
            strCmdLine = Left$(strCmdLine, InStr(strCmdLine, " ") - 1)
            strCmdLine = Trim$(strCmdLine)
            
            Do While strCmdLine <> vbNullString
                
                strCmdLine = Mid$(strCmdLine, 2)
                Redim Preserve strArguments(lngArgumentsCount)
                
                If Cbool(InStr(strCmdLine, "/")) Then
                    
                    strArguments(lngArgumentsCount) = _
                        Left$(strCmdLine, InStr(strCmdLine, "/") - 1)
                    
                Else
                    
                    strArguments(lngArgumentsCount) = strCmdLine
                    
                End If
                
                strCmdLine = Right$(strCmdLine, Len(strCmdLine) - _
                    Len(strArguments(lngArgumentsCount)))
                lngArgumentsCount = lngArgumentsCount + 1
                
            Loop
            
            If Cbool(lngArgumentsCount) Then
                
                For lngIndex = 0 To lngArgumentsCount - 1
                    MsgBox strArguments(lngIndex)
                Next
            End If
        End If
    End If
End Sub

Der Aufruf muss so erfolgen:
"C:\Programme\Microsoft Office\OFFICE12\EXCEL.EXE" /e/Test "D:\Mappe2.xlsm"

So kannst du auch mehrere Parameter übergeben (obige Prozedur zerlegt dir diese wieder in einzelne Werte):
"C:\Programme\Microsoft Office\OFFICE12\EXCEL.EXE" /e/Test1/Test2/Test3 "D:\Mappe2.xlsm"

Gruß
Nepumuk
Anzeige
AW: Kommandozeile aus Excelaufruf in Makro auswerten
25.10.2010 11:40:23
Heinzs
SUPER! Vielen Dank.
MfG
Heinz

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige