2
www.ChF-Online.de  

Start von Word mit Parametern II

   Neuigkeiten
   API-Aufrufe in VBA
   VBA2HTML
   Word
   Word-VBA
aktiv aktiv Verschiedenes
 Dateiname ohne Endung
 Dokumentstrukturanzeige
 Fenster anordnen
 Fensterliste
 Fensterliste (II)
 Kalender erstellen
 Kommentarinformationen
 Lesezeichen
 Beliebigen Ordner öffnen
 Position der Einfügemarke
 Seitenanfang/-ende
 Shapes ansprechen
 Sicherheitskopien erstellen
 Word-Startparameter
aktiv  Word-Startparameter II
 Startordner "Bild einfügen"
 Tags finden u. bearbeiten
 Tags finden/bearbeiten (II)
 Text2WordArt
 Textbausteine verwenden
 Textmarken (I)
 Textmarken (II)
 Überschrift zu Textmarke
 VBA-Konverter
 Wasserzeichen
 Zeichen tauschen
 Feld-Arbeiten
 Form-Sachen
 Menü-/Symbolleisten
 VBA und Lotus Notes
 VBA und Mail
 Inside VBAIDE
 Von Word nach Outlook
 Fix-und-Fertiges/Projekte
   Word2007 (RibbonX)
   Word2010 (RibbonX)
   Outlook-VBA
   Links zu VB(A)
   DocToHelp
   Netport Express XL
   Astronomie
   Gästebuch
   Volltextsuche
   Sitemap
   Buch:Word-Programmierung
   Impressum & Kontakt
   Datenschutzerklärung
Getestet unter Word2003Getestet unter Word2007Getestet unter Word2010Getestet unter Windows7  
Beispiel anzeigen
Makro/Datei speichern
Print

Während das vorgestellte Beispiel zum Aufruf von Word mit mehreren Parametern unter Windows 2000 und Windows XP fehlerfrei funktioniert, bereitet es unter Windows 7 (64-Bit) Probleme. So werden die in Anführungszeichen gefassten Parameter einfach an Leerzeichen abgeschnitte, ohne das ein System erkennbar ist (keine Länge von 255 Zeichen o.ä.).

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:

Code markieren
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 

Aufruf der Parameter

Die Auswertung und der Aufruf des angegebenen Makros erfolgt unverändert in der Prozedur Aufruf.


 Besucher: 0 online  |  0 heute  |  0 diesen Monat  |  717286 insgesamt | Seitenaufrufe: 3   Letzte Änderung: 07.06.2010 © 2001-18 Christian Freßdorf
  Ich stimme nicht notwendiger weise mit allem überein, was ich sage.
Marshall McLuhan, 1911, kanadischer Lehrer
 powered by phpCMS and PAX