Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Abfrage in den Ordner Dokumente des aktuellen Benutzers speichern

Begonnen von Estadl, Februar 18, 2025, 09:33:35

⏪ vorheriges - nächstes ⏩

Estadl

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

PhilS

Environ("USERPROFILE")
liefert dir den benutzerspezifischen Teil des Pfades.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Estadl

Danke PhilS,

kannst du mir sagen wie die Zeile dann lauten muss, bin noch blutiger Anfänger.

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Estadl


werner budde

#5
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
Gruß Werner

Knobbi38

... oder man verschiebt den vorhandenen Code einfach in die neue Ereignisprozedur und löscht den verbleibenden Stub.

Gruß
Knobbi38

Bitsqueezer

...oder man wendet "Compile" nach dem Verschieben an, weil leere Event-Prozeduren-"Stummel" vom Compiler automatisch entfernt werden... ;)

Gruß

Christian

werner budde

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?
Gruß Werner

Knobbi38

@Werner:

Christian hat schon Recht: ein leerer Funktions- oder Prozedurrumpf wird beim Kompilieren aus dem Code entfernt. Das war schon immer so.

Gruß
Ulrich

werner budde

#10
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?
Gruß Werner

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

werner budde

@ 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.
Gruß Werner

Knobbi38

@Werner: Es gibt anscheinend Konstellation, wo der Stub wieder erwarten stehen bleibt.