Hallo, möchte die Datei in den Ordner Dokumente des aktuellen Users speichern. Zur Zeit schaffe ich es nur, wenn ich einen genauen Weg eingebe. Siehe Beispiel
Private Sub Befehl181_Click()
DoCmd.OutputTo acOutputQuery, "Storno", acFormatXLSX, "C:\Users\estadl\Documents\Storno.xlsx", True, ""
End Sub
Danke für eure Hilfe und Grüße aus Oberösterreich
Environ("USERPROFILE")
liefert dir den benutzerspezifischen Teil des Pfades.
Danke PhilS,
kannst du mir sagen wie die Zeile dann lauten muss, bin noch blutiger Anfänger.
Es ist übersichtlicher, wenn du den Funktionsaufruf nicht direkt in die Zeile einbaust, sondern eine zusätzliche Variable verwendest, um erst den Ausgabe-Dateinamen zusammenzubauen und dann für den Export zu verwenden.
Das könnte dann so aussehen:
Private Sub Befehl181_Click()
Dim AusgabeDateiname as String
AusgabeDateiname = Environ("USERPROFILE") & "\Documents\Storno.xlsx"
DoCmd.OutputTo acOutputQuery, "Storno", acFormatXLSX, AusgabeDateiname, True, ""
End Sub
Ein Tipp am Rande: Vergib aussagefähige Namen für deine Steuerelemente. Bei "Befehl181" weiß in ein paar Wochen kein Mensch mehr (dich eingeschlossen) was das sein soll.
Herzliches Danke für deinen Tipp, es funktioniert.
ZitatEin Tipp am Rande: Vergib aussagefähige Namen für deine Steuerelemente. Bei "Befehl181" weiß in ein paar Wochen kein Mensch mehr (dich eingeschlossen) was das sein soll.
Kann ich nur bestätigen; ABER ACHTUNG:
Wenn man bereits eine Ereignisprozedur zu einem Steuerelement angelegt hat und dann später das Steuerelement umbenennt, ist die Ereignisprozedur verwaister Müll, der auch nach Komprimieren und Reparieren immer noch vorhanden ist.
Lösung:
- Vor (!) der Umbenennung den Prozedurencode retten (z.B. Zwischenablage oder temporäre Textdatei)
- den Code dann löschen (!)
- Nun das Steuerelement umbenennen
- und in der Eigenschaftenbox zum entsprechenden Ereignis "Beim_XXX" den Code wieder in VBA einfügen
... oder man verschiebt den vorhandenen Code einfach in die neue Ereignisprozedur und löscht den verbleibenden Stub.
Gruß
Knobbi38
...oder man wendet "Compile" nach dem Verschieben an, weil leere Event-Prozeduren-"Stummel" vom Compiler automatisch entfernt werden... ;)
Gruß
Christian
Zitat...oder man wendet "Compile" nach dem Verschieben an, weil leere Event-Prozeduren-"Stummel" vom Compiler automatisch entfernt werden...
@ Christian,
das konnte ich leider so nicht nachvollziehen;
Getestet:
- Button angelegt, mit Prozedur BeimKlicken ausgestattet
- Button umbenannnt
- Erneut mit Prozedur BeimLicken ausgestattet
- Bei der alten Prozedur den Code gelöscht, Sub und End Sub (sollen das die ,,Stummel" sein?) stehen gelassen
Weder Debuggen im VBA-Editor noch Komprimieren und Reparieren noch Decompile auf cmd-Ebene haben den Stummel entfernt
Habe ich da was falsch verstanden?
@Werner:
Christian hat schon Recht: ein leerer Funktions- oder Prozedurrumpf wird beim Kompilieren aus dem Code entfernt. Das war schon immer so.
Gruß
Ulrich
Private Sub BS_Alt_Click()
End Sub
Private Sub BS_Neu_Click()
MsgBox "x"
End Sub
Bei o.a. Code bleibt der Prozedurenrumpf zu BS_Alt_Click bei mir so stehen, wenn ich die in #8 genannten Schritte allesamt ausführe.
Nochmal die Frage: wo ist meinerseits das Missverständnis?
Zitat von: werner budde am Februar 21, 2025, 16:36:52Nochmal die Frage: wo ist meinerseits das Missverständnis?
Du benennst den Button um, der ursprünglich mit der Ereignisprozedur verknüpft war.
Damit handelt es sich nicht mehr um eine leere Ereignisprozedur, sondern um eine allgemeine, leere Prozedur, die "zufällig" einen Namen hat der einer Ereignisprozedur ähnlich ist.
@ Phil,
Ja, ich bin da ja 100%-ig bei Dir. Aber ich kann Christians Aussage in #7 nicht nachvollziehen??!
Das ist jetzt alles leider O.T.
@Werner: Es gibt anscheinend Konstellation, wo der Stub wieder erwarten stehen bleibt.