Thema Datum  Von Nutzer Rating
Antwort
01.04.2019 12:19:30 Reini
NotSolved
Blau Excel VBA - PDF-Convert über Kommandozeile
02.04.2019 18:23:32 Ulrich
NotSolved
02.04.2019 18:24:53 Ulrich
NotSolved
03.04.2019 14:59:56 Gast45437
NotSolved

Ansicht des Beitrags:
Von:
Ulrich
Datum:
02.04.2019 18:23:32
Views:
560
Rating: Antwort:
  Ja
Thema:
Excel VBA - PDF-Convert über Kommandozeile

Hallo,

 

ich habe mir deinen code kaum angesehen. Woher hast du denn die Info mit den Switches /q und /a?

Denn hier:

https://support.microsoft.com/de-de/help/291288/description-of-the-startup-switches-for-excel

kann ich weder /q noch /a finden? Kann das sein, dass du das mit Word vewechelst?

 

Ich habe versucht, den Code von Nepumuk für dich anzupassen

http://www.herber.de/forum/archiv/1180to1184/1183170_Kommandozeile_aus_Excelaufruf_in_Makro_auswerten.html

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 Args() As String
    Args = getCommandLineArgs()
    MsgBox Args(0)
End Sub


Private Function getCommandLineArgs()
'von Nepumuk gestohlen und angepasst:
'      http://www.herber.de/forum/archiv/1180to1184/1183170_Kommandozeile_aus_Excelaufruf_in_Makro_auswerten.html
    Dim strCmdLine As String, strArguments() As String
    Dim lngArgumentsCount As Long
    Dim lngReturn As Long, lngLength As Long
Stop
    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
            
            getCommandLineArgs = strArguments
        
        End If
    End If
    
End Function

 

Jetzt kannst du ja statt msgbox args(0) die Datei öffenen und drucken.

Der Aufruf muss jetzt allerdings so erfolgen:

"C:\Program Files\Microsoft Office\root\Office16\excel.exe" /e/c:\test\Ordner\inputFile.xls "C:\Macro.xlsm"

 

kommst du klar?

Grüße, Ulrich


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
01.04.2019 12:19:30 Reini
NotSolved
Blau Excel VBA - PDF-Convert über Kommandozeile
02.04.2019 18:23:32 Ulrich
NotSolved
02.04.2019 18:24:53 Ulrich
NotSolved
03.04.2019 14:59:56 Gast45437
NotSolved