Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Batchparameter an Excel übergeben und im Macro verarbeiten?

2,182 views
Skip to first unread message

Michael Mueller

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to
Hi,

Ich würde gerne eine Excel-Datei per Batch-Datei aufrufen.
Der Aufruf soll wie folgt aussehen:

start datei.xls 1

Ist es möglich die "1" an Excel zu übergeben, und wenn ja wie kann ich sie
in einem Makro verarbeiten (z.B. wenn 1 dann ...)

Danke
Michi

Matthias Tacke

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to
Hallo Michael,
du suchst die Command() Funktion

--
Gruß
Matthias Tacke Email: Matt...@Tacke.de
---------+---------+---------+---------+---------+---------+---------+-------

Michael Mueller <Michael....@de.bosch.com> schrieb in im Newsbeitrag:
8l1aa9$o4q$1...@proxy.fe.internet.bosch.de...

Michael Mueller

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to
Habe ich auch schon daran gedacht, aber wie geht es dann mit dem Aufrufen
des Parameters.

Start der Datei mit
start datei.xls 1

Im Makro dann habe ich versucht mit Parameter=Command() den Parameter zu
ermitteln, ohne Erfolg :-(

Weißt Du wie es geht?

Danke
Michi

Matthias Tacke schrieb:


>Hallo Michael,
>du suchst die Command() Funktion

Piet Schmiedel

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to

Michael Mueller <Michael....@de.bosch.com> schrieb in im Newsbeitrag:
8l1dlc$4dk$1...@proxy.fe.internet.bosch.de...

> Habe ich auch schon daran gedacht, aber wie geht es dann mit dem Aufrufen
> des Parameters.

> Weißt Du wie es geht?

Nein, aber die Hilfe! Die hast Du doch auch, oder nicht?

--------------------------------------------------------------------
DIE COMMAND-FUNKTION
--------------------------------------------------------------------
Gibt den Argument-Abschnitt der Befehlszeile zurück, die verwendet wird, um
Microsoft Visual Basic oder ein ausführbares Programm aufzurufen, das mit
Visual Basic entwickelt wurde.

Syntax

Command

Bemerkungen

Wenn Visual Basic von der Befehlszeile, aufgerufen wird,
wird jeder Abschnitt, der auf /cmd folgt, als
^^^^^^^^^^^^^^^^^^ Wenns überhaupt geht, dann so!

Befehlszeilenargument an das Programm übergeben. Im folgenden Beispiel stellt
befzeilarg die Argumentinformationen dar, die durch die Command-Funktion
zurückgegeben werden.

VB /cmd befzeilarg

Bei Anwendungen, die mit Visual Basic entwickelt wurden und zur einer
ausführbaren Datei kompiliert wurden, gibt Command jedes Argument zurück, das
in der Befehlszeile auf den Namen der Anwendung folgt. Beispiel:

TestAnw befzeilarg
--------------------------------------------------------------------

Wie immer gilt: RTFM!

Gruss,
Piet

Piet Schmiedel

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to

Syntax

Command

Bemerkungen

VB /cmd befzeilarg

TestAnw befzeilarg
--------------------------------------------------------------------

Wie immer gilt: R_T_F_M!

Gruss,
Piet

Piet Schmiedel

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to

Syntax

Command

Bemerkungen

VB /cmd befzeilarg

TestAnw befzeilarg
--------------------------------------------------------------------

Wie immer gilt: RT*M!

Gruss,
Piet

Piet Schmiedel

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to

Michael Mueller <Michael....@de.bosch.com> schrieb in im Newsbeitrag:
8l1dlc$4dk$1...@proxy.fe.internet.bosch.de...
> Habe ich auch schon daran gedacht, aber wie geht es dann mit dem Aufrufen
> des Parameters.

> Weißt Du wie es geht?

Nein, aber die Hilfe! Die hast Du doch auch, oder nicht?


DIE COMMAND-FUNKTION

Gibt den Argument-Abschnitt der Befehlszeile zurück, die verwendet wird, um
Microsoft Visual Basic oder ein ausführbares Programm aufzurufen, das mit
Visual Basic entwickelt wurde.

Syntax

Command

Bemerkungen

Wenn Visual Basic von der Befehlszeile, aufgerufen wird,
wird jeder Abschnitt, der auf /cmd folgt, als
^^^^^^^^^^^^^^^^^^ Wenns überhaupt geht, dann so!

Befehlszeilenargument an das Programm übergeben. Im folgenden Beispiel stellt
befzeilarg die Argumentinformationen dar, die durch die Command-Funktion
zurückgegeben werden.

VB /cmd befzeilarg


Gruss,
Piet

Piet Schmiedel

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to
Sorry für das Mehrfachposting! Hatte ein Server-Problem.

Erst kam immer "No Server-accepted article" oder so, und auf einmal flutschten
alle 4 Versionen aus dem Postausgang.

Gruss,
Piet


Michael Mueller

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to
Hi Piet

Hab ich schon probiert und es hat nix geholfen :-(

Wie anders kann ich es denn bewerkstelligen das aus einer Batch-Datei heraus
eine Excel-Datei geöffnet und dabei auch noch ein Parameter übergeben wird?

Piet Schmiedel

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to
Michael Mueller <Michael....@de.bosch.com> schrieb in im Newsbeitrag:
8l1hn9$fps$1...@proxy.fe.internet.bosch.de...

> Hab ich schon probiert und es hat nix geholfen :-(
>
> Wie anders kann ich es denn bewerkstelligen das aus einer Batch-Datei heraus
> eine Excel-Datei geöffnet und dabei auch noch ein Parameter übergeben wird?

Sorry, no idea. :-(

Gruss,
Piet


Robert Gelbmann

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to

Hallo Piet! Hallo Michael!

Tja, lieber Piet, das Lesen der Online-Hilfe ist schon wichtig, aber wenn
schon, dann richtig:
;-))

Folgende Problematik:
Die Command()-Funktion ist in der Excel-Hilfe leider völlig fehl am Platze!
Denn wie ganz deutlich (?) im von Piet zitierten Hilfe-Text (Ich halte es im
übrigen für wenig sinnvoll, wenn man/frau hier in der NG seitenweise die
Excel-Hilfe zitiert!!) steht, ist diese Funktion für Microsoft Visual Basic
bzw. damit erstellten Programmen gedacht!

Und da hier nicht VBA (Visual Basic for Applications) sondern eben das
"richtige" Microsoft Visual Basic (kurz VB) gemeint ist, gehört die gesamte
Funktion nicht (mehr) zu Excel.

IMHO war die Command-Funktion in früheren Office-Versionen auch in den
jeweiligen Office-Produkten verfügbar. Beispielsweise konnte man/frau das in
der Befehlszeile via "/cmd" übergebene Argument in Access 97 sehr wohl mit
der Command-Funktion (jetzt VBA) abfragen.

Leider ist mir derzeit kein direkter Weg bekannt, in der Befehlszeile etwas
an die VBA-Welt einer Arbeitsmappe zu übergeben. Bliebe da noch die
Möglichkeit ein eigenes VB (!)-Programm zu schreiben, das dann wiederum die
gewünschte Excel-Arbeitsmappe öffnet und dann die gewünschten Argumente an
eine - via VB (!) - gestartete VBA-Prozedur übergibt.

Vermutlich einfacher wird es sein, die gewünschten Argumente vorher in eine
Textdatei zu schreiben (beispielsweise via Batch-Datei) und dann die
Excel-Arbeitsmappe zu starten, deren VBA-Makro wiederum die Werte aus dieser
Textdatei ausliest.


In der Hoffnung etwas zur Klärung beigetragen zu haben, verbleibe ich mit
einem leisen

Servus aus Wien,
-Robert Gelbmann-

P. S.: Ich bitte um Verständnis, daß ich Anfragen ausschließlich in der NG
beantworten kann!

---
MS MVPCE für Excel
EML: <rgel...@mvps.org>
WWW: http://www.roehrenbacher.at/


Matthias Tacke

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to
Hallo Robert,
nach dem Motto mit API geht alles,
vieleicht versucht es jemand hiermit:

Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineA" () As
String


hth

Matthias Tacke

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to

Michael Mueller <Michael....@de.bosch.com> schrieb in im Newsbeitrag:
8l1aa9$o4q$1...@proxy.fe.internet.bosch.de...

> Hi,
>
> Ich würde gerne eine Excel-Datei per Batch-Datei aufrufen.
> Der Aufruf soll wie folgt aussehen:
>
> start datei.xls 1
>
> Ist es möglich die "1" an Excel zu übergeben, und wenn ja wie kann ich sie
> in einem Makro verarbeiten (z.B. wenn 1 dann ...)
>
Hallo Michi,

es ist mir zwar gelungen über eine API-Funktion die exakte Commandline
über einen auto_open-Makro einzulesen, nur nützt das nichts.

Excel versucht alles was auf der Commandline steht als Datei zu öffnen,
auch den Parameter. Und wenn es den nicht als Datei gibt, kommt eine
Fehlermeldung. Automatisiert läßt sich so nicht arbeiten.

Der Hinweis mit einer Hilfsdatei zu arbeiten von Robert Gelbmann ist sicher
am sinnvollsten. Textdateien importiert Excel (je nach Einstellung) ohne
große Probleme und legt sie Zeilenweise in untereinander stehenden
Zellen ab. Die Textdatei kann man bequem mit einer Batch-Datei erstellen
und so dann auch gleich mehrere Parameter übergeben. Z.B.:

*********Schnipp*********
Rem Test.Bat
ECHO Parameter1 >Test.txt
ECHO Parameter2 >>Test.txt
Rem hier müssen noch die korrekten Pfade eingesetzt werden.
Excel Test.txt Arbeit.xls
*********Schnapp*********

Durch diese Batch-Datei startet Excel, lädt beide Dateien. Von Arbeit.xls
läßt sich auch direkt auf die Werte in den Zellen von Test.txt zugreifen.
In A1 steht Parameter1 in A2 Parameter2 etc.

*********Schnipp*********
' Modul in Arbeit.xls
Declare Function GetCommandLine Lib "kernel32" _


Alias "GetCommandLineA" () As String

Sub auto_open()
MsgBox GetCommandLine
End Sub
*********Schnapp*********

Michael Schwimmer

unread,
Jul 18, 2000, 3:00:00 AM7/18/00
to
Michael Mueller <Michael....@de.bosch.com> schrieb in im Newsbeitrag:
8l1aa9$o4q$1...@proxy.fe.internet.bosch.de...
> Ist es möglich die "1" an Excel zu übergeben, und wenn ja wie kann ich sie
> in einem Makro verarbeiten (z.B. wenn 1 dann ...)
>
> Danke
> Michi

Hallo Michael,
Mathias Tacke hat mit der API Funktion GetCommandLine recht.
Damit geht das.

Declare Function GetCommandLine& Lib "kernel32" _
Alias "GetCommandLineA" ()
Private Declare Function lstrlen Lib "kernel32" ( _
ByVal str As Long) As Long
Private Declare Function lstrcpy Lib "kernel32" ( _
ByVal dest As String, _
ByVal src As Long) As Long

Sub Befehlszeile()
Dim a
a = StringVonPointer(GetCommandLine())
MsgBox a
End Sub


Private Function StringVonPointer(plngAscii As Long)
Dim lngAnzahl&, strName$
lngAnzahl = lstrlen(plngAscii)
strName = String(lngAnzahl, 0)
lstrcpy strName, plngAscii
If InStr(1, strName, Chr(0)) <> 0 Then
strName = Left$(strName, InStr(1, strName, Chr(0)) - 1)
End If
StringVonPointer = strName
End Function

Jetzt noch beim Öffnen der Mappe aufgerufen und du hast die
komplette Befehlszeile, die etwa so aussieht:
"C:\Programme\Microsoft Office\Office\EXCEL.EXE" "c:\Eigene
Dateien\Befehlszeile.xls" 1


MfG
Michael


Michael Schwimmer

unread,
Jul 19, 2000, 3:00:00 AM7/19/00
to
Matthias Tacke <Matt...@Tacke.de> schrieb in im Newsbeitrag:
8l2gqu$o4k$16$1...@news.t-online.com...

> es ist mir zwar gelungen über eine API-Funktion die exakte Commandline
> über einen auto_open-Makro einzulesen, nur nützt das nichts.
>
> Excel versucht alles was auf der Commandline steht als Datei zu öffnen,
> auch den Parameter. Und wenn es den nicht als Datei gibt, kommt eine
> Fehlermeldung. Automatisiert läßt sich so nicht arbeiten.
>
Hallo Matthias,
ich habe eben einen Beitrag von Frank Arendt-Theilen, gesendet am
Mittwoch, 8. März 2000 11:43 mit dem Betreff
Re: Startparameter bei Excel 97 gefunden.
Er hat dabei einen ein Beitrag von Laurent Longre zitiert, der sich mit
genau diesem Thema auseinandersetzt. Du brauchst beim Aufrufen nur
hinter den Dateinamen /e/EigenerParameter zu setzen, und schon klappt
das. Beispielsweise so :
excel c:\temp\test.xls /e/param1
Da ist auch ein Beispiel zum Auslesen dabei. Wer sich dafür interessiert,
einfach bei Deja.com nachschauen.

MfG
Michael

Michael Mueller

unread,
Jul 19, 2000, 3:00:00 AM7/19/00
to
An alle die mir geholfen haben,

mittlerweile habe ich es so gelöst, das ich den Parameter durch ein
VB-Scribt an Excel übergebe. Läuft zwar prima, aber ich wollte halt nur die
Excel-Datei.

Den Tip mit der API-Funktion werde ich aber mal ausprobieren, hört sich sehr
vielversprechend an. Ich denke das ist genau das was ich brauche.

Nochmals vielen Dank für Eure Hilfe

Michael Mueller

Matthias Tacke

unread,
Jul 19, 2000, 3:00:00 AM7/19/00
to
Hallo Michael,
warum hast du bei dem Declare GetCommandLine nicht einfach "As String"
angehängt? Funktioniert bei mir und braucht die StringVonPointer nicht?
Siehe mal mein Posting vom 18.7.00 23:05.

Gruß
Matthias

Michael Schwimmer <Schw...@t-online.de> schrieb in im Newsbeitrag:
8l2jmn$kmk$10$1...@news.t-online.com...

Matthias Tacke

unread,
Jul 19, 2000, 3:00:00 AM7/19/00
to

Michael Schwimmer <Schw...@t-online.de> schrieb in im Newsbeitrag:
8l2q9f$qhs$16$1...@news.t-online.com...
Das zeigt mal wieder, das das Rad schon erfunden ist und sollte der Aufruf
an alle Hilfesuchenden sein sich mit www.deja.com/Usenet auseinanderzu-
setzen. Auch wenn man bei der Formulierung der Suchbegriffe etwas
Phantasie braucht.

btw: Die Idee mit dem Textfile hat trotzdem was, erspart das Parsen in
VBA und die Parameter können direkt referenziert werden.
=[TEST.TXT]TEST!$A$1
=[TEST.TXT]TEST!$A$2 etc.

Piet Schmiedel

unread,
Jul 19, 2000, 3:00:00 AM7/19/00
to
Robert Gelbmann <rgel...@mvps.org> schrieb in im Newsbeitrag:
eEPyumN8$GA.284@cppssbbsa05...

> Tja, lieber Piet, das Lesen der Online-Hilfe ist schon wichtig, aber wenn
> schon, dann richtig:
> ;-))

Hast ja Recht. Hatte nur die Schreibweise gesehen (/Parameter), und die war,
unter der Annahme der Verwendung der Command()-Funktion, einfach falsch.
Deshalb der Hinweis auf die Hilfe. Das das dann _immer_ noch nicht geht, ist
schade. Ich denke nur, daß man die vorher durchgelesen haben sollte.

> Denn wie ganz deutlich (?) im von Piet zitierten Hilfe-Text (Ich halte es im
> übrigen für wenig sinnvoll, wenn man/frau hier in der NG seitenweise die
> Excel-Hilfe zitiert!!) steht, ist diese Funktion für Microsoft Visual Basic
> bzw. damit erstellten Programmen gedacht!

Auch wenn das in der Hilfe so steht, sollte man es nicht immer glauben,
sondern mal ausprobieren. Bringt hier leider nix (?) -> schade. "Seitenweise"
ist wohl etwas übertrieben. Sollte dem Poster nur Zeit sparen und
Mißverständnisse vermeiden.

Ich würde jetzt auch über die Hilfsdatei gehen, das hat schon oft geholfen,
z.B. um zu erkennen, ob ein extern gestartetes Programm fertig ist (als letzte
Aktion dort copy dummy.txt fertig.txt).

Gruss,
Piet


Michael Schwimmer

unread,
Jul 19, 2000, 3:00:00 AM7/19/00
to
Matthias Tacke <Matt...@Tacke.de> schrieb in im Newsbeitrag:
8l3ij6$3n1$12$1...@news.t-online.com...

> Hallo Michael,
> warum hast du bei dem Declare GetCommandLine nicht einfach "As String"
> angehängt? Funktioniert bei mir und braucht die StringVonPointer nicht?
> Siehe mal mein Posting vom 18.7.00 23:05.
>
> Gruß
> Matthias

Hallo Matthias,
ich hatte im Appleman nachgeschaut, und habe gelesen, daß die
Funktion einen Pointer zurückliefert. Die Funktion StringVonPointer
hatte ich mal in einem anderen Zusammenhang geschrieben und war
somit verfügbar. Da ich die meiste Zeit offline bin, habe ich deinen
Beitrag erst gelesen, nachdem ich meinen gepostet hatte.
Ist schon erstaunlich, was eine kleine Änderung bei der Deklaration
bewirken kann.

MfG
Michael


Frank Arendt-Theilen

unread,
Jul 19, 2000, 3:00:00 AM7/19/00
to

Hallo Michael,
folgender beitrag von Laurent Longre:

------------------------------ schnipp -------------------------------
Re: getting hold of the start up params from VBA
Author: Laurent Longre
Email: lon...@wanadoo.fr
Date: 1998/09/15
Forums: microsoft.public.excel.programming

Bonjour,

The following trick works at least in XL97 SR-1 / Win95.
The command line arguments must be read by the Auto_open (or
Workbook_Open) Sub of your add-in (say c:\temp\test.xla).
Your command line should look like this one:

start excel c:\temp\test /e/param1/param2/.../paramN (DOS command)

RetVal = Shell("c:\...\excel.exe c:\temp\test /e/param1/...paramN")
(VB)

i.e. : after excel.exe, the name of the add-in, then the switch /e
**immediately** followed by your own arguments. These arguments should
be separated by "/" without any intermediate space.
For instance, if you want to pass the arguments "c:\temp\file1.dbf",
"all" and "exclusive" to Excel, your command-line should look like:

start excel c:\temp\test /e/c:\temp\file1.dbf/all/exclusive

2. In Test.xla, use the API function GetCommandLine (alias
GetCommandLineA in Win95) to get the contents of this command-line
string.
You should then parse the string returned by GetCommandLineA, search
for
the separators "/" and store each argument in an array. Here is an
example of a such Auto_open sub:

'**************************************************
Option Base 1
Declare Function GetCommandLineA Lib "Kernel32" () As String
Dim Args() As String

Sub Auto_open()

Dim CmdLine As String
Dim ArgCount As Integer
Dim Pos1 As Integer, Pos2 As Integer

CmdLine = GetCommandLineA
Pos1 = InStr(1, CmdLine, "/") + 1
Pos1 = InStr(Pos1, CmdLine, "/") + 1

Do While Pos1 <> 1
Pos2 = InStr(Pos1, CmdLine, "/")
ArgCount = ArgCount + 1
ReDim Preserve Args(ArgCount)
Args(ArgCount) = Mid(CmdLine, Pos1, _
IIf(Pos2, Pos2, Len(CmdLine)) - Pos1)
MsgBox "Argument " & ArgCount & " : " & Args(ArgCount)
Pos1 = Pos2 + 1
Loop

End Sub
'**************************************************

If you use the command-line above, this Auto_open sub will store the
three arguments ("c:\temp\file1.dbf", "all" and "exclusive") in the
Args() array and display them.

Again, be sure that you don't insert any space between /e and each
argument in the command-line, otherwise it will fail (Excel would
believe that these "pseudo-arguments" are the names of workbooks to
open
at startup...).

Bonne chance,

Laurent
------------------------------ schnipp -------------------------------

MfG Frank
_____________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
E-Mail: Thei...@t-online.de


Am Tue, 18 Jul 2000 12:08:07 +0200, schrieb Michael Mueller
<Michael....@de.bosch.com> in microsoft.public.de.excel zu
"Batchparameter an Excel übergeben und im Macro verarbeiten?":

>Hi,
>
>Ich würde gerne eine Excel-Datei per Batch-Datei aufrufen.
>Der Aufruf soll wie folgt aussehen:
>
> start datei.xls 1
>

Robert Gelbmann

unread,
Jul 20, 2000, 3:00:00 AM7/20/00
to

Hallo Piet!

War ja nur gut gemeint! - Von uns beiden!
:-)

P.S.: Der Vorschlag von Matthias scheint mir recht brauchbar zu sein!
:-))


In der Hoffnung geholfen zu haben, verbleibe ich mit einem leisen

Robert Gelbmann

unread,
Jul 20, 2000, 3:00:00 AM7/20/00
to

Hallo Matthias!

Interessanter Vorschlag, den ich mir erlaube gleich aufzugreifen.
Es folgt eine kleine Funktion, die den übergebenen Parameter ausliest.
Allerdings sind folgende Besonderheiten zu beachten:
(1) Der Aufruf der Excel-Datei muß vollständig erfolgen. (Also vorher
excel.exe)
(2) Der Parameter muß *nach* excel.exe und *vor* dem Excel-Dateinamen
stehen.
(3) Der Parameter beginnt mit /cmd (kann beliebig im Code geändert werden,
nur Excel-eigene Parameter dürfen nicht verwendet werden).
(4) Der Parameter muß *direkt* (d. h. vor allem auch *ohne* Leerzeichen
dazwischen!) nach dem einführenden /cmd angeführt werden.
(5) Der Parameter darf keine Leerzeichen enthalten! Es wäre aber denkbar
mehrere Parameter - beispielsweise getrennt durch weitere "/"-Zeichen (vgl.
Beitrag von Frank) - gleichzeitig zu übergeben.

Anwendungsbeispiel (z. B. als Verknüpfung):
"C:\Programme\Microsoft Office\Office\EXCEL.EXE" /cmdtest
"C:\test\MeineDatei.xls"

(Im konkreten Fall wurde der Parameter "test" übergeben.)


Nun noch der VBA-Code dazu:

'--- In einem Modul ---
Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineA" () As
String

Function xCommand() As String
Const xID = "/cmd"
xCommand = GetCommandLine()

' Null-Zeichen am Ende entfernen ...
xCommand = Replace(Expression:=xCommand, Find:=Chr(0), Replace:="",
Compare:=vbBinaryCompare)

' Linken Teil abschneiden (excel.exe, usw.) ...
xPos = InStr(xCommand, xID)
If xPos > 0 Then
xCommand = Mid(xCommand, xPos + Len(xID))
Else
xCommand = ""
End If

' Rechten Teil abschneiden (Dateiname) ...
xPos = InStr(xCommand, " ")
If xPos > 0 Then
xCommand = Left(xCommand, xPos - 1)
Else
xCommand = ""
End If

End Function

'----- Anwendung beispielsweise beim Workbook_Open-Ereignis -----
Private Sub Workbook_Open()
Select Case LCase(xCommand())
Case ""
MsgBox "Kein Parameter gefunden!"

Case "test"
MsgBox "Erwarteter Parameter 'test' gefunden!"

Case Else
MsgBox "Unerwarteter Parameter:" & vbCrLf & xCommand

End Select
End Sub


--

Robert Gelbmann

unread,
Jul 20, 2000, 3:00:00 AM7/20/00
to

Hallo Frank!

Funktioniert toll, bis auf eine Kleinigkeit:
Bei mir (Win98SE, Office 2000) wird - aus welchen Gründen auch immer - die
von CommandLine() übergebene Kommandozeile mit Ende des Dateipfades einfach
abgeschnitten! (Frage am Rande: Weiß jemand woran das liegt? Betriebssystem?
Office 2000?)

Also z. B. so:
statt:
"C:\Programme\Microsoft Office\Office\EXCEL.EXE" "C:\test\test.xls"
/e/Parameter

erhalte ich nur:
"C:\Programme\Microsoft Office\Office\EXCEL.EXE" "C:\test\test.xls

Die Länge des Pfades scheint dabei keine Rolle zu spielen, aber wie Du
siehst, wird sogar das abschliessende " radikal entfernt ...

Eine einfache Lösung des Problems ist es, die Reihenfolge der Parameter zu
ändern (vgl. auch meinen Beitrag in diesem Thread):
"C:\Programme\Microsoft Office\Office\EXCEL.EXE" /e/Parameter
"C:\test\test.xls"

Allerdings muß man/frau dann noch den Dateinamen, der am Ende des letzten
Parameters fälschlicherweise angefügt wird (bleibt), entfernen ...


In der Hoffnung etwas geholfen zu haben, verbleibe ich mit einem leisen

Frank Arendt-Theilen

unread,
Jul 27, 2000, 3:00:00 AM7/27/00
to

Hallo Robert,
die Anführungszeichen scheinen nicht richtig gesetzt worden zu sein,
also: "LW:\Pfad\excel.exe LW:\Pfad\Datei /e/Parameter"
War es das?

MfG Frank
_____________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
E-Mail: Thei...@t-online.de


Am Thu, 20 Jul 2000 10:12:21 +0200, schrieb "Robert Gelbmann"
<rgel...@mvps.org> in microsoft.public.de.excel zu "Re:


Batchparameter an Excel übergeben und im Macro verarbeiten?":

>Hallo Frank!

0 new messages