![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Start von Word mit Parametern II |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|||||||||||||||||||||
![]() |
|
![]() |
Während das Aus diesem Grund ist für Windows Vista (x64) und Windows 7 eine Anpassung notwendig, auf die mich freundlicherweise Martin Rumpf hingewiesen hat - an dieser Stelle ein herzliches Danke dafür). Winword.exe /mAufruf /pMeinMakro "/p1'Parameterwert01 mit Leerzeichen' /p2'Parameter02 ' _ /p3'Parameter03 0815 4711' /p4'Parameter04'" Als funktionierende Alternative kann der Parameterblock in Anführungszeichen und die einzelnen Parameter in einfache Anführungszeichen (') gefasst werden. Zusätzlich muss dann natürlich die Auswerteroutine angepasst werden: ![]() Sub Aufruf() ' Wichtig: _ Diese Hilfsfunktion wertet die Kommandozeile aus und MUSS vorhanden sein Dim s As String Dim sProz() As String, sPara() As String Dim sMakro As String Dim sProzedur As String Dim iPos As Integer Dim sParameter() As String s = ShowCommandline ' API zum Auslesen der Kommandozeile ' Anführungszeichen entfernen s = Replace(s, Chr(34), "") sProz() = Split(s, "/m") ' Makroname abtrennen If UBound(sProz()) = 0 Then MsgBox "Word wurde ohne Parameterliste aufgerufen.", vbInformation, "" Exit Sub End If sPara() = Split(sProz(1), "/p") 'Prozeduren und Parameter abtrennen ' Makroname sMakro = Trim(sPara(0)) ' Aufzurufende Prozedur sProzedur = Trim(sPara(1)) ' Parameter-Array ermitteln ReDim sParameter(UBound(sPara) - 2) ' Schleife über alle angegebenen Parameter For iPos = 2 To UBound(sPara) ' HochKomma entfernen sParameter(iPos - 2) = Replace(Mid(sPara(iPos), InStr(1, sPara(iPos), Chr(39))), Chr(39), "") Next iPos On Error GoTo err_Call ' Angegebene Prozedur aufrufen ' sProzedur: Name des Makros, das die Kommandozeile auswertet ' sMakro: Name des aufzurufenden Makros ' s: Komplette Kommandozeile ' sParameter(): Array mit allen angegebenen Parametern Application.Run sProzedur, sProzedur, sMakro, s, sParameter() Exit Sub err_Call: MsgBox "Fehler in der Kommandozeile:" & vbCrLf & s End Sub Die Auswertung und der Aufruf des angegebenen Makros erfolgt unverändert in der Prozedur Aufruf. |
![]() |
![]() |
Besucher: 0 online | 0 heute | 0 diesen Monat | 2266190 insgesamt | Seitenaufrufe: 144 | ![]() |
Letzte Änderung: 07.06.2010 | ![]() |
© 2001-18 Christian Freßdorf | ![]() |
Es gibt nichts Gutes, außer man tut es. Erich Kästner |
powered by phpCMS and PAX |