Problem mit automatischem Ausführen eines Moduls

Ich habe ein Problem mit der automatischen Ausführung meines Moduls. Bin neu in Access und Module, Prozeduren sind mir kein Begriff. Habe es Mal mit learning by doing probiert.
Diverse Forumbeiträge zum Thema haben mir nicht weitergeholfen.

Anforderung:

Mit einer Accessabfrage wird ein csv-Report erzeugt, der jeden Montag per E-Mail versendet werden soll.
Die Erstellung per Makro funktioniert nicht für das geforderte csv-Format (nur Excel, html, txt ist Murks).
Im Forum habe ich den Tip mit dem Modul gefunden und es funktioniert wunderbar, aber leider nur „halbautomatisch“. Es soll aber alles mit einem Click durchgeführt sein.

Zur lauft es Zeit „halbautomatisch“:

soll heißen, dass mit „click“ im Formular das Makro „Report_csv_erzeugen“ das Modul geöffnet, aber nicht ausgeführt wird. „Modul Ausführen“ gibt es leider nicht. Auch mit „Ausführen Befehl“ oder „Ausführen Code“ war ich nicht erfolgreich.
Wenn ich im geöffneten Modulfenster „F5“ drücke, wird das Modul ausgeführt. Das Ergebnis ist die erzeugte csv, im vorgegebenen Verzeichnis. Nach manuellem Schließen des Modulfensters bin ich wieder im Formular.

Wie kann ich das Modul automatisch ausführen?

Das ist das Makro und das Modul:

Schaltfläche im Formular:

Führt folgendes Makro aus:
Name des Makros: Report_csv_erzeugen

Aktion: ÖffnenModul
Modulname: Report_test
Prozedurname: Report_test

Das Makro im MS-VB-Fenster:

Private Sub Modul_ausführen_Click()
On Error GoTo Err_Modul_ausführen_Click
Dim stDocName As String
stDocName = „Report_csv_erzeugen“
DoCmd.RunMacro stDocName

Exit_Modul_ausführen_Click:
Exit Sub

Err_Modul_ausführen_Click:
MsgBox Err.Description
Resume Exit_Modul_ausführen_Click

End Sub

MS VB Editor Fenster öffnet sich:

Option Compare Database

Function Report_test()

On Error GoTo Report_test_Err
’ Erzeugen der LAN-Port-Report
DoCmd.TransferText acExportDelim, StandardOutput, „report_switch_dose“, „M:\report_switch_dose.csv“, True
Report_test_Exit:
Exit Function
Report_test_Err:
MsgBox Error$
End Function

Danke im Voarraus.

Hallo Fox,

ich weiß nicht wie die Klassenmodule in Access heißen. Egal, es sind Module.
Alles was du da reinschreibst wie
Sub xyz()

End Sub

sind Prozeduren. Alle Module zusammen stellen ein Projekt dar, das Projekt der jeweiligen Datei. Soweit zu den Begriffen.

Dein Hin- und Hergehüpfe macht man nicht, schreib das so:

Private Sub Modul_ausführen_Click()
Dim stDocName As String
On Error GoTo Err_Modul_ausführen_Click
stDocName = „Report_csv_erzeugen“
DoCmd.RunMacro stDocName
Err_Modul_ausführen_Click:
If Err.Number 0 Then MsgBox Err.Description
End Sub

Mit einer Accessabfrage wird ein csv-Report erzeugt, der jeden
Montag per E-Mail versendet werden soll.

Ich sehe keinen entsprechenden Code, oder steckt der in der zeile mit TransferText?
Sorry, kann kein Access-Vba.

Die Erstellung per Makro funktioniert nicht für das geforderte
csv-Format (nur Excel, html, txt ist Murks).

? kannst du erläutern was du damit meinst?

soll heißen, dass mit „click“ im Formular das Makro
„Report_csv_erzeugen“ das Modul geöffnet, aber nicht
ausgeführt wird. „Modul Ausführen“ gibt es leider nicht. Auch
mit „Ausführen Befehl“ oder „Ausführen Code“ war ich nicht
erfolgreich.

Sorry, ein Modul kann man nicht ausführen. Ein Makro ist eine Prozedur die in einem Modul steht.
Falls wichtig, zeige mal den Inhalt des makros „Report_csv_erzeugen

Wenn ich im geöffneten Modulfenster „F5“ drücke, wird das
Modul ausgeführt. Das Ergebnis ist die erzeugte csv, im
vorgegebenen Verzeichnis. Nach manuellem Schließen des
Modulfensters bin ich wieder im Formular.

Ist das so geplant oder ein Fehler?

Führt folgendes Makro aus:
Name des Makros: Report_csv_erzeugen

Aktion: ÖffnenModul
Modulname: Report_test
Prozedurname: Report_test

Das hilft mir leider nicht weiter.

Ich hab von Access keine Ahnung, du mußt abschätzen ob es hilfreich ist mit rapidshare ( FAQ:2606 ) eine beispieldatei hochzuladen.

Gruß
Reinhard

Gruß
Reinhard

Hallo Fox,

ich weiß nicht wie die Klassenmodule in Access heißen. Egal,
es sind Module.
Alles was du da reinschreibst wie
Sub xyz()

End Sub

sind Prozeduren. Alle Module zusammen stellen ein Projekt dar,
das Projekt der jeweiligen Datei. Soweit zu den Begriffen.

Dein Hin- und Hergehüpfe macht man nicht, schreib das so:

Das hilft mir leider nicht weiter.

Ich hab von Access keine Ahnung, du mußt abschätzen ob es

ch glaub die diskussion wäre bei access besser, weil access sich anders verhält mit seinen formularen views etc etc …

da es ja ums aufrufen geht und nicht um eine ausführung .

übrigens wenn man in VBA-editor ein modul öffnet so hat man meist die erste funktion (bzw procedure) dort wenn man dann auf F5 drückt wird diese ausgeführt.

Solltest du garnicht den VBA-editor wollen , weiss mann/frau das ein paar Bretter weiter unten , bei Access und Datenbanken bestimmt mehr.

ciao

Danke Reinhard,

ich merke schon, dass ich hier fast richtig bin.
Mit dem Hin- und Hergehüpfe ist wohl ein grundsätzlicher Fehler gemeint.

Hallo Fox,

ich weiß nicht wie die Klassenmodule in Access heißen. Egal,
es sind Module.
Alles was du da reinschreibst wie
Sub xyz()

End Sub

sind Prozeduren. Alle Module zusammen stellen ein Projekt dar,
das Projekt der jeweiligen Datei. Soweit zu den Begriffen.

Dein Hin- und Hergehüpfe macht man nicht, schreib das so:

Private Sub Modul_ausführen_Click()
Dim stDocName As String
On Error GoTo Err_Modul_ausführen_Click
stDocName = „Report_csv_erzeugen“
DoCmd.RunMacro stDocName
Err_Modul_ausführen_Click:
If Err.Number 0 Then MsgBox Err.Description
End Sub

Mit einer Accessabfrage wird ein csv-Report erzeugt, der jeden
Montag per E-Mail versendet werden soll.

Ich sehe keinen entsprechenden Code, oder steckt der in der
zeile mit TransferText?
Sorry, kann kein Access-Vba.

Gemeint ist, dass ich jeden Montag diesen Report erzeugen muss.
Access öffnen, Formular öffnet sich, Click auf Button für das Makro, das öffnet das Modul in VBA Ansicht, ich drücke F5, die Accesstabelle wird in Modul „Report_test“ als csv erzeugt und in das vorgesehene Verzeichnis kopiert. Alles wie geplant und läuft wunderbar. BIS AUF F5 DRÜCKEN.
Diesen Eingriff möchte ich noch automatisieren.

Die Erstellung per Makro funktioniert nicht für das geforderte
csv-Format (nur Excel, html, txt ist Murks).

? kannst du erläutern was du damit meinst?

Wenn über ein Makro aus einer Accesstabelle eine Datei.txt erzeugt wird, bekomme ich jede Menge Unterstriche und zusätzliche Zeilen mit Linien (Leerzeichen/felder zwischen Trennzeichen?).

soll heißen, dass mit „click“ im Formular das Makro
„Report_csv_erzeugen“ das Modul geöffnet, aber nicht
ausgeführt wird. „Modul Ausführen“ gibt es leider nicht. Auch
mit „Ausführen Befehl“ oder „Ausführen Code“ war ich nicht
erfolgreich.

Sorry, ein Modul kann man nicht ausführen. Ein Makro ist eine
Prozedur die in einem Modul steht.
Falls wichtig, zeige mal den Inhalt des makros
„Report_csv_erzeugen

Steht ganz oben „Private Sub Modul Ausführen_Click()“

Wenn ich im geöffneten Modulfenster „F5“ drücke, wird das
Modul ausgeführt. Das Ergebnis ist die erzeugte csv, im
vorgegebenen Verzeichnis. Nach manuellem Schließen des
Modulfensters bin ich wieder im Formular.

Ist das so geplant oder ein Fehler?

Bis auf „F5“ drücken ist alles wie geplant! Aber ohne F5 komme ich nicht zurück zum Formular!

Führt folgendes Makro aus:
Name des Makros: Report_csv_erzeugen

Aktion: ÖffnenModul
Modulname: Report_test
Prozedurname: Report_test

Das hilft mir leider nicht weiter.

Ich hab von Access keine Ahnung, du mußt abschätzen ob es
hilfreich ist mit rapidshare ( FAQ:2606 ) eine beispieldatei
hochzuladen.

Gruß
Reinhard

Gruß
Reinhard

Gruß
Fox

Hallo Fox,

Mit dem Hin- und Hergehüpfe ist wohl ein grundsätzlicher
Fehler gemeint.

ja, mit den GoTos hüpfst du hin und her. Das macht man nicht.
Ausnahmen sind wenn das bewußt benutzt um Code zu beschleunigen bei z.B. bei Berechnung von Kombinationsmöglichkeiten usw.

Generell gilt immer das EVA-Prinzip, E ingabe, V erarbeitung. A usgabe für jeden „Block“ in einer Prozedur und für die gesamte Prozedur.

Gemeint ist, dass ich jeden Montag diesen Report erzeugen
muss.

Montage sollte man abschaffen *find* :smile:)

Access öffnen, Formular öffnet sich, Click auf Button für das
Makro, das öffnet das Modul in VBA Ansicht, ich drücke F5, die
Accesstabelle wird in Modul „Report_test“ als csv erzeugt und
in das vorgesehene Verzeichnis kopiert. Alles wie geplant und
läuft wunderbar. BIS AUF F5 DRÜCKEN.
Diesen Eingriff möchte ich noch automatisieren.

Irgendwas kapier ich da nicht. Leg doch das makro auf deinen Button, dann brauchste kein F5 zu drücken.
F5 dient doch nur dazu um im Editor Code zu testen.
Ein Button startet das Makro und fertig.

Dieser Button kann jetzt ein Button in deinem Accessformular sein, oder aber ein Button = Symbol oben in der Menueleiste.
Je nachdem steht dann das dazugehörige Makro entweder in einem Modul der Accessdatei oder im zweiten Fall bei Excel in der personl.xls und bei Word in der normal.dot, irgendsowas wirds auch bei Access geben *glaub*

Die Erstellung per Makro funktioniert nicht für das geforderte
csv-Format (nur Excel, html, txt ist Murks).

? kannst du erläutern was du damit meinst?

Wenn über ein Makro aus einer Accesstabelle eine Datei.txt
erzeugt wird, bekomme ich jede Menge Unterstriche und
zusätzliche Zeilen mit Linien (Leerzeichen/felder zwischen
Trennzeichen?).

Dazu bräuchte ich eine beispiel-Accessdatei siehe rapidshare ( FAQ:2606 ) und den Code des makros um das a) nachzuvollziehen, b) evtl. verbessern zu können.

Sorry, ein Modul kann man nicht ausführen. Ein Makro ist eine
Prozedur die in einem Modul steht.
Falls wichtig, zeige mal den Inhalt des makros
„Report_csv_erzeugen

Steht ganz oben „Private Sub Modul Ausführen_Click()“

? Ichfragte nach dem Code für „„Report_csv_erzeugen“

Nochmal, ich hab von Access keinerlei Ahnung. In Excel kann ich binnen weniger Minuten eine Tabelle erstellen, mehrspaltig, mit gefüllten unterschiedlichen daten um daran Code zu testen.

Als ich das mal probierte dies in Access zu tun, also nur so eine Beispieltabelle zu erstellen war ich eine Stunde beschäftigt und das Ergebnis war nur annähernd so wie ich es eigentlich wollte.

Insofern kann ich dir in Access selbst sowieso nicht helfen. ABER Vba ist was anderes, da sehe ich Chancen.
Also, lad bitte mal eine Beispiel-mdb oder wie die heißen hoch. Mit allen Codes drin die du hast.

dann krieg ich das hin oder sage dir halt sorry, krieg ich nicht hin :smile:

Gruß
Reinhard

Hallo Reinhard,

danke für Deine schnelle Antwort. Ich glaube hier prallen Welten aufeinander, bzw. Sprachen.
Du sprichst in VBA und ich verstehe das wohl nicht :frowning:(
Wie beschrieben führe ich das Makro zum Öffnen des Moduls „Report_test“ über einen Button in einem Formular aus. Der Modul-Editor öffnet sich, und weiter geht es nur mit F5.

Leider habe ich das Access-Programm nicht „Zuhause“, daher kann ich erst Montag reagieren. Wenn Du noch eine Change zur Lösung siehst, werde ich Dich am Montag noch Mal Kontakten.

Wenn Du merkst, dass ich ein „Beratungsresistent“ bin, dann gib mir ein „Zeichen“. Werde mich dann an die Access-Fraktion wenden.

Nochmals Danke für Deine Mühe und schönes Wochenende

Gruß

Fox

Hallo Fox,

Mit dem Hin- und Hergehüpfe ist wohl ein grundsätzlicher
Fehler gemeint.

ja, mit den GoTos hüpfst du hin und her. Das macht man nicht.
Ausnahmen sind wenn das bewußt benutzt um Code zu
beschleunigen bei z.B. bei Berechnung von
Kombinationsmöglichkeiten usw.

Generell gilt immer das EVA-Prinzip, E ingabe,
V erarbeitung. A usgabe für jeden „Block“ in einer
Prozedur und für die gesamte Prozedur.

Gemeint ist, dass ich jeden Montag diesen Report erzeugen
muss.

Montage sollte man abschaffen *find* :smile:)

Access öffnen, Formular öffnet sich, Click auf Button für das
Makro, das öffnet das Modul in VBA Ansicht, ich drücke F5, die
Accesstabelle wird in Modul „Report_test“ als csv erzeugt und
in das vorgesehene Verzeichnis kopiert. Alles wie geplant und
läuft wunderbar. BIS AUF F5 DRÜCKEN.
Diesen Eingriff möchte ich noch automatisieren.

Irgendwas kapier ich da nicht. Leg doch das makro auf deinen
Button, dann brauchste kein F5 zu drücken.
F5 dient doch nur dazu um im Editor Code zu testen.
Ein Button startet das Makro und fertig.

Dieser Button kann jetzt ein Button in deinem Accessformular
sein, oder aber ein Button = Symbol oben in der Menueleiste.
Je nachdem steht dann das dazugehörige Makro entweder in einem
Modul der Accessdatei oder im zweiten Fall bei Excel in der
personl.xls und bei Word in der normal.dot, irgendsowas wirds
auch bei Access geben *glaub*

Die Erstellung per Makro funktioniert nicht für das geforderte
csv-Format (nur Excel, html, txt ist Murks).

? kannst du erläutern was du damit meinst?

Wenn über ein Makro aus einer Accesstabelle eine Datei.txt
erzeugt wird, bekomme ich jede Menge Unterstriche und
zusätzliche Zeilen mit Linien (Leerzeichen/felder zwischen
Trennzeichen?).

Dazu bräuchte ich eine beispiel-Accessdatei siehe rapidshare (
FAQ:2606 ) und den Code des makros um das a) nachzuvollziehen,
b) evtl. verbessern zu können.

Sorry, ein Modul kann man nicht ausführen. Ein Makro ist eine
Prozedur die in einem Modul steht.
Falls wichtig, zeige mal den Inhalt des makros
„Report_csv_erzeugen

Steht ganz oben „Private Sub Modul Ausführen_Click()“

? Ichfragte nach dem Code für „„Report_csv_erzeugen“

Nochmal, ich hab von Access keinerlei Ahnung. In Excel kann
ich binnen weniger Minuten eine Tabelle erstellen,
mehrspaltig, mit gefüllten unterschiedlichen daten um daran
Code zu testen.

Als ich das mal probierte dies in Access zu tun, also nur so
eine Beispieltabelle zu erstellen war ich eine Stunde
beschäftigt und das Ergebnis war nur annähernd so wie ich es
eigentlich wollte.

Insofern kann ich dir in Access selbst sowieso nicht helfen.
ABER Vba ist was anderes, da sehe ich Chancen.
Also, lad bitte mal eine Beispiel-mdb oder wie die heißen
hoch. Mit allen Codes drin die du hast.

dann krieg ich das hin oder sage dir halt sorry, krieg ich
nicht hin :smile:

Gruß
Reinhard

Hallo Fox,

danke für Deine schnelle Antwort. Ich glaube hier prallen
Welten aufeinander, bzw. Sprachen.

macht doch nix, nur so kommt man ins Gespräch und lernt was Neues :smile:

Du sprichst in VBA und ich verstehe das wohl nicht :frowning:(

? Du hast doch quasi angefangen, du hast doch hier Vba-Code gezeigt *lächel*

Wie beschrieben führe ich das Makro zum Öffnen des Moduls
„Report_test“ über einen Button in einem Formular aus. Der
Modul-Editor öffnet sich, und weiter geht es nur mit F5.

Das mit F5 verstehe ich nicht.

Leider habe ich das Access-Programm nicht „Zuhause“, daher
kann ich erst Montag reagieren. Wenn Du noch eine Change zur
Lösung siehst, werde ich Dich am Montag noch Mal Kontakten.

Schad, so wie heute hätte ich am WE Zeit mch darum zu kümmern.
Aber macht nix, schau ich halt Montag.

Wenn Du merkst, dass ich ein „Beratungsresistent“ bin, dann
gib mir ein „Zeichen“.

Kein Akt, das läuft bei mir wie automatisch ab, ich bitte 1mal, 2mal um irgendwas, z.B. eine Beispielmappe hochzuladen. Kommt die nicht, naja dann sage ich lmaA, natürlich in feineren Worten.

Werde mich dann an die Access-Fraktion wenden.

Weiß ich nicht ob das hier bei w-w-w was bringt, ich lese im Accessbrett nicht mit, kann das also nicht einschätzen.
Wenns da so läuft wie z.B. im Word-Brett biste hier besser aufgehoben mit VB(A) Anfragen.

Gruß
Reinhard