Discussion:
DoCmd.Output
(zu alt für eine Antwort)
Pascal Roches
2005-12-14 10:32:41 UTC
Permalink
Hallo Leute
Win XP AcXP

Ich habe eine Exportfunktion erstellt über VBA mit dem Befehl DoCmd.Output.
Gibt es hier eine Möglichkeit innerhalb von VBA auf das erstellte File
zuzugreifen? Ich erstelle ein Excel-file und möchte dieses über
OLE-Automatisierung in VBA weiterbearbeiten.

Für Eure Antwort besten Dank

Gruss
Pascal
Karl Donaubauer
2005-12-14 11:12:18 UTC
Permalink
Post by Pascal Roches
Win XP AcXP
Ich habe eine Exportfunktion erstellt über VBA mit dem Befehl
DoCmd.Output. Gibt es hier eine Möglichkeit innerhalb von VBA auf das
erstellte File zuzugreifen? Ich erstelle ein Excel-file und möchte
dieses über OLE-Automatisierung in VBA weiterbearbeiten.
...
Wo genau kommst du denn nicht weiter?

Oder fehlt's grundsätzlich beim Thema Automatisierung?
Dann helfen vielleicht ein paar Beispiele für Access-->Excel:
http://support.microsoft.com/kb/210148/en-us
http://support.microsoft.com/kb/210288/en-us

oder das OfficeXP Automation Help File:
http://support.microsoft.com/kb/302460/en-us

Mit ein bissel googlen findest du sicher weitere Beispiele und Infos.
--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
Datenbank-Profis: http://www.dbdev.org
Pascal Roches
2005-12-16 12:09:10 UTC
Permalink
Hallo Karl
Post by Karl Donaubauer
Wo genau kommst du denn nicht weiter?
Es ist eigentlich nicht die Automatisierung, die Probleme bereitet, sondern
der Zugriff auf das von DoCmd.OutputTo erstellte File. D.h.: um eine
Arbeitsmappe weiter bearbeiten zu können, benötige ich einen Verweis auf
diese. Dies wäre z.B. möglich, wenn DoCmd.OutputTo einen Rückgabewert z.B.
in Form von Pfad und Dateiname hätte. (Oder kenne ich die
OLE-Automatisierung zu wenig?;-)
Ich könnte natürlich die Datei selbst (mithilfe Automatisierung) erstellen,
was eben viel zusätzlichen Code zur Folge hätte.

Gruss
Pascal
Michel Fouquet
2005-12-16 12:25:22 UTC
Permalink
Hallo,
Post by Pascal Roches
Es ist eigentlich nicht die Automatisierung, die Probleme bereitet, sondern
der Zugriff auf das von DoCmd.OutputTo erstellte File. D.h.: um eine
Arbeitsmappe weiter bearbeiten zu können, benötige ich einen Verweis auf
diese. Dies wäre z.B. möglich, wenn DoCmd.OutputTo einen Rückgabewert z.B.
in Form von Pfad und Dateiname hätte. (Oder kenne ich die
OLE-Automatisierung zu wenig?;-)
in der OH VB zu OutputTo steht:

<zitat Aufruf>
Ausdruck.OutputTo(ObjectType, ObjectName, OutputFormat, OutputFile,
AutoStart, TemplateFile, Encoding)
</zitat Aufruf>

Und zum o.g. Parameter OutputFile findet sich:

<zitat OutputFile>
OutputFile Optionaler Variant-Wert. Ein Zeichenfolgenausdruck, der den
vollständigen Namen und Pfad der Datei angibt, in die das Objekt
ausgegeben werden soll. Wird dieses Argument weggelassen, fordert
Microsoft Access Sie auf, eine Ausgabedatei anzugeben.
</zitat OutputFile>

Da hast Du doch den vollständigen Namen und Pfad der Datei.

Oder dürfen wir im Kristallkugelmodus davon ausgehen, dass Du den
OutputFile-Parameter überhaupt nicht angibst und somit im
Dateiauswahl-Dialog ("Ausgabe in") landest?

Es ist generell hilfreich für diejenigen, deren Hilfe Du erwartest, dass
Du möglichst vollständige Angabe machst. Z.B. könntest Du den Code
Deiner Exportfunktion posten.

mfg,
Michel
--
OH VB: Online Hilfe von VBA im VB Editor (Taste F1)
FAQ: http://www.donkarl.com/AccessFAQ.htm
KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
Karl Donaubauer
2005-12-18 09:37:40 UTC
Permalink
Post by Pascal Roches
Post by Karl Donaubauer
Wo genau kommst du denn nicht weiter?
Es ist eigentlich nicht die Automatisierung, die Probleme bereitet,
sondern der Zugriff auf das von DoCmd.OutputTo erstellte File. D.h.: um
eine Arbeitsmappe weiter bearbeiten zu können, benötige ich einen Verweis
auf diese. Dies wäre z.B. möglich, wenn DoCmd.OutputTo einen Rückgabewert
z.B. in Form von Pfad und Dateiname hätte. (Oder kenne ich die
OLE-Automatisierung zu wenig?;-)
Ich könnte natürlich die Datei selbst (mithilfe Automatisierung)
erstellen, was eben viel zusätzlichen Code zur Folge hätte.
Beim OutputTo musst du doch den Namen der Zieldatei samt Pfad
angeben. Wo liegt das Problem, ihn später für die Automatisierung
weiter zu verwenden?
--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
Datenbank-Profis: http://www.dbdev.org
Michel Fouquet
2005-12-18 10:49:18 UTC
Permalink
Hallo,
Post by Karl Donaubauer
Beim OutputTo musst du doch den Namen der Zieldatei samt Pfad
angeben. Wo liegt das Problem, ihn später für die Automatisierung
weiter zu verwenden?
auf meine Frage vom 16.12. die genau darauf abzielt, hat der OP ja noch
nicht geantwortet (Frühgleiter ins Wochenende, Weihnachtsurlaub oder
keine Lust?). Der Name der Zieldatei (OutputFile-Parameter) ist, wie die
OH an gibt, optional - bis auf den ObjectType-Parameter sind laut OH ja
alle OutputTo-Parameter optional.

Statt der OutputTo-Methode ließe sich auch die
TransferSpreadsheet-Methode verwenden. Die Ausgangsproblematik stellt
sich hier deutlicher, da bei fehlendem Dateinamen eben kein FileDialog
aufpoppt, sondern ein Laufzeitfehler erzeugt wird. (Die OG gibt
fälschlicherweise an, es handele sich ausschließlich um optionale
Parameter.)

Hilfsweise könnte noch eine Inputbox mit aufwändigem Codegeraffel
kommen, ob es sich bei der Eingabe um einen zulässigen Pfad- und
Dateinamen handelt und ob denn das gewünschte Zielverzeichnis überhaupt
existiert usw..

Eine Von-hinten-durch-die-Brust-ins-Auge-Lösung per API mit Auslesen des
Handles des "Ausgabe In"-Dialogs und Übernahme des eingegebenen
Dateinamens? Eine grauslige Vorstellung.

Das Einfachste wäre doch - neben der Vorgabe eines festen Pfades und
eines ggf. dynamisch erzeugten Dateinamens - das Vorschalten des
Dateiauswahl- oder BrowseForFolder-Dialogs über ein ordentliches,
benutzerdefiniertes Dialog-Formular. Den Code dafür gibt's ja fertig im Web.

Dass unter der Maßgabe einer weiteren Bearbeitung der Zieldatei per
Automation die bislang vom OP benutzte OutputTo-Methode eher nicht so
zielführend ist, hast Du ihn ja bereits gleich zu Beginn des Threads
wissen lassen. Er selbst hat das für sich als Lösungsweg innerlich wohl
schon akzeptiert: "Ich könnte natürlich die Datei selbst (mithilfe
Automatisierung) erstellen, was eben viel zusätzlichen Code zur Folge
hätte."

Viel mehr können wir momentan dem OP im Kristallkugelmodus vermutlich
nicht anbieten.

mfg,
Michel

Loading...