Neuigkeiten:

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

Mobiles Hauptmenü

E_Mail versandt mit CSV Datei und variablen Namen

Begonnen von ben_brooke, Mai 04, 2025, 08:44:40

⏪ vorheriges - nächstes ⏩

ben_brooke

Moin,
ich habe folgendes programmiert: Eine bekannte Vorgehensweise
   
'strDateiname = Me!Text575 & "Nutzung" & Me!Kombinationsfeld217 & " " & Me!Text586 & " " & Me!Kombinationsfeld215 & ".xls"

DoCmd.SendObject acSendQuery, "abf_WVG_RVM_8", acFormatXLS, "Name_Test@web.de", , , _
                    "Email mit Abfrage als Excel-Datei", "Dies ist der Text der Email.", True

Aus einer Abfrage wird eine XLS Datei generiert und diese per Anhang an die RE-Mail angehängt.
Das funktioniert seht gut.
Jetzt möchte ich aber nicht das die XLS Datei den Namen der Abfrage als Anhang hat sondern möchte wie in der Zeile darüber "strDateiname" aufgezeigt einen variablen Dateinamen bekommen.
Meine Frage: Wie kann ich den den strDateiname dort intrigieren? Oder was muss ich ändern.
Vielen Dank für die Hilfe

Knobbi38

Hallo,

du mußt vorher die XL-Datei temporär mit dem gewünschten Namen abspeichern und dann als Anhang an die Mail anhängen.
Allerdings würde man üblicherweise eine Rechnung nicht als XL-Datei versenden, sondern als PDF-Datei., weil XL-Dateien in vielen Firewalls als Anhang gesperrt  sind.

Gruß
Knobbi38

ben_brooke

Moin,
das mit der Firewall ist ein interessanter Hinweis. .
Aber meine Frage dazu:
Wenn ich die XLS oder CSV temporär abspeichere und dann hat diese ja immer einen variablen Namen. Wie bekomme ich das dann als Anhang hin 

Knobbi38

Hallo Ben,

wie man per Outlook eine Mail versendet und dabei eine Datei als Anhang mitgibt, ist nun hinreichend im Forum beschrieben worden. Ich glaube nicht, daß man diesen Code jetzt nochmal hier posten extra müßte. Einfach mal im Forum danach suchen. Wenn du nicht weiter kommst, kurz Bescheid geben.

Gruß Knobbi38



ben_brooke

Moin knobbi38, ja das ist richtig aber es ist immer eine PDF als Anhang vorgesehen. Das läuft bei einen anderen Bericht bei mir auch.
Der Code greift auf einen Bericht zu dessen Name immer gleich ist. Die variable des Dateinamen der PDF kommt dann von den im Bericht im Eigenschaftsblatt "unter beim Öffnen" abgelegte Variable.

Und genau da liegt mein Thema. Den Namen der XLS Datei mit variablen.
Dazu habe ich noch nicht Forum gefunden bzw. habe noch nicht die richtigen Suchwörter eingegeben
Gruß Ben

Knobbi38

Hallo Ben,

mit der DoCmd.OutputTo-Methode kannst du einen Bericht unter einem bestimmten Dateinamen und in einem bestimmten Format erstellen.

Gruß Knobbi38

ben_brooke

Moin Knobbi38,
auch das mit der DoCMD.OutputTo Methode habe ich jetzt auch hinbekommen.
automatisch wird Excel geöffnet und die Datei angezeigt und beim speichern hat sie den variablen Namen.

DoCmd.OutputTo acOutputTable, "WVG_RVM_4", _
'acFormatXLS, Me!Text575 & " " & "Nutzung" & " " & Me!Kombinationsfeld217 & " " & Me!Kombinationsfeld215 & " " & Me!Text586 & ".xls",

Ich bin nicht so fit in der Sache aber wie kann ich jetzt die DoCMD.OutpotTo Methode mit der DoCmd.SendObject acSendQuery aus dem EMail versandt verknüpfen.
Gruß Ben

Vielleicht kann man mir da noch einmal auf die Sprünge helfen


Debus

Hey,

Du machst das einfach der Reihe nach.

1. Output
2. Send

einfach so als wenn Du etwas Bauen würdest erst das Fundament dann das Haus.

Holger

Knobbi38

Hallo Ben,

da wird nichts verknüpft und hat auch nichts mit SendObject zu tun (das hatten wir schon mal, oder?).
Nachdem die Datei erzeugt worden ist, öffnest du Outlook per Automation, erstellst eine neue Mail, weist dem Mail-Body den gewünschten Text zu und fügst deine Datei als Anhang an. Anschließend kannst du die temporäre Datei wieder löschen.

Wie bereits gesagt, gibt es dafür schon unzählige Beispiele, einfach mal danach im Forum suchen.

Gruß Knobbi38

Debus

Hallo Ulli, wie ich schon geschrieben habe, aber ich glaube das mit dem Senden ist vielleicht nicht eindeutig für Ben :=))

Vielleicht mal ein Muster zum verdeutlichen für Ben

Dim olApp As Object
Dim olMail As Object

Set olApp = CreateObject("Outlook.Application")
Set olMail = olApp.CreateItem(0)

With olMail
    .To = "Mailadresse"
    .Subject = "Deine Betreffzeile"
    .Body = "Dein Mustertext."
    .Attachments.Add "C:\Pfad\Bericht.xls"   oder auch als Variable
    .Send
End With

Gruß
Holger

und alle eine schönes Restwochenende

Debus

Sorry ich wollte auch nochmal an #1 und die Firewall erinnern!!! Bei den meisten Unternehmen wird sowas gefiltert. Also entweder gar nicht weitergegeben oder es bleibt in einer Quarantäne bis die Datei x-mal mit einen Virenscanner geprüft wurde. Und sollte dort ein Makro enthalten sein kommt es in guten Unternehmen garantiert nicht durch. Also pdf

Alles andere ist nicht gut

Knobbi38

Noch eine kleine Anmerkung zum Code aus #9:

Bitte nicht das Freigeben der verwendeten Ressourcen vergessen, sonst kann das bei COM-Automation schnell schiefgehen:
   'Clean up the Outlook application.
   Set olMail= Nothing
   Set olApp = Nothing

Wenn Outlook durch den Code gestartet wird, sollte man Outlook auch wieder beenden, ansonsten einfach nur die Automation  beenden. Das wäre dann das I-Tüpfelchen, ist aber für zu Hause nicht notwendig.

Gruß Knobbi38

Debus

Hallo Ulli, da hast du recht habe ich bei dem kleinen Muster vergessen.

Asche auf mein Haupt =)))

Holger