_Nora_ Geschrieben 14. Februar 2011 Geschrieben 14. Februar 2011 Hallo, ich möchte aus Access heraus einen Bericht als Email anhang versenden. Da ich das an verschiedenen stellen machen muss, habe ich ein Moudl sendMail erstellt, dem jetzt die entsprechenden Daten mitgegeben werden soll. ich habe schon viele Foren durchsucht, finde aber immer nur angaben mit Dateipfaden, aber ich will den Bericht ja nicht speichern, sondern direkt aus Access heraus als pdf verschicken. Ist das überhaupt mölich? mein bisheriger code: Option Compare Database Public Sub send_Mail(empfaenger$, betreff As String, text As String, Optional cempfaenger As String, Optional pfad As String) Dim objwShell As Object 'aktiveirt ClickYes Set objwShell = CreateObject("wscript.shell") objwShell.Run ("""C:\Programme\Express ClickYes\ClickYes.exe"" -activate") Dim myMail As Outlook.MailItem Dim myOutlApp As Outlook.Application ' Ein neue Outlook-Instanz und ein neues Mailitem erstellen Set myOutlApp = New Outlook.Application Set myMail = myOutlApp.CreateItem(0) With myMail ' Den Empfänger der Mail festlegen .To = empfaenger ' Einen CC-Empfänger hinzufügen .CC = cempfaengeer ' Den Betreff der Mail festlegen .Subject = betreff ' Text in die Mail einfügen .Body = text ' Ein Attachment aus dem Dateisystem anhängen If Not pfad = "" Then .Attachments.Add pfad End If ' Die Email abschicken .Send ' Anstatt die Email sofort zu senden, kann man auch die Display-Methode des ' Mailitems verwenden, um die Email anzuzeigen und sie vom Benutzer manuell ' verschicken zu lassen. End With ' Objektvariablen zerstören und Speicher freigeben Set myMail = Nothing Set myOutlApp = Nothing 'beendet ClickYes objwShell.Run ("""C:\Programme\Express ClickYes\ClickYes.exe"" -stop") End Sub und mein Funktionsaufruf: 'Email_var erstellen Dim empfaenger As String Dim betreff As String Dim text As String Dim pfad As String 'Zuordnung empfaenger = "meine Adresse" betreff = "betreff" text = "Inhalt" pfad = "Berichtname" Call sendMail.send_Mail(empfaenger, betreff, text, , pfad) vielen Dank im vorraus nora Zitieren
HJST1979 Geschrieben 15. Februar 2011 Geschrieben 15. Februar 2011 Hallo da du einen Access- Bericht hast, der def. noch kein PDF ist musst du natürlich erst einmal den Bericht in PDF umwandeln. Was spricht dann dagegen diese PDF auf dem FileSystem abzulegen, dann als Dateianhang zu versenden und dann im FileSystem wieder zu löschen. Um einen Bericht in ein PDF umzuwandeln kannst du z.B. PDF-Creator verwenden, dort gibt es auch viele BeispielCodes. Gruß Hans-Jörg Zitieren
_Nora_ Geschrieben 15. Februar 2011 Autor Geschrieben 15. Februar 2011 da du einen Access- Bericht hast, der def. noch kein PDF ist musst du natürlich erst einmal den Bericht in PDF umwandeln. Was spricht dann dagegen diese PDF auf dem FileSystem abzulegen, dann als Dateianhang zu versenden und dann im FileSystem wieder zu löschen. klingt erst mal ganz gut, kann ich das aus Access heraus löschen? Um einen Bericht in ein PDF umzuwandeln kannst du z.B. PDF-Creator verwenden, dort gibt es auch viele BeispielCodes. das geht leider nicht, weil der User nichts von der E-Mail mitbekommen soll... das ganze soll so zusagen im Hintergrund laufen... d.h. wenn ein User eine bestimmte Funktion ausführt (bei mir ein Click-Ereignis, die eine Aktualisierung durchführt) soll mir eine E-Mail mit geschickt werden, in der der aktuelle Bericht/ ein aktuelles Formular als Datei angehängt wird. mir ist dabei egal, ob Excel/Word/pdf/rtf/snapshot hauptsache der User bekommt es nicht mit. danke für deine schnelle Antwort, nora Zitieren
HJST1979 Geschrieben 15. Februar 2011 Geschrieben 15. Februar 2011 Hallo also wenn ich das richtig verstanden habe geht es dir weniger um die Optik sondern eher darum zu sehen welche Daten in dem Bericht stehen. Wenn dem so ist, kannst du ja einfach eine TextEmail (ähnlich wie eine LOG- Datei) wegschicken. Noch zum PDF-Creater: Wenn ich mich nicht komplett irre, kannst du Programmiertechnisch den PDF- Creator so verwenden, dass KEINE Maske des PDF-Creators hoch kommt, dies wiederum heißt, dass der Endanwender nichts mitbekommt. Dateien löschen sollte über Access schon gehen. Gruß Hans-Jörg Zitieren
_Nora_ Geschrieben 15. Februar 2011 Autor Geschrieben 15. Februar 2011 also wenn ich das richtig verstanden habe geht es dir weniger um die Optik sondern eher darum zu sehen welche Daten in dem Bericht stehen. Wenn dem so ist, kannst du ja einfach eine TextEmail (ähnlich wie eine LOG- Datei) wegschicken. kannst du mir den Code zum erzeugen dieser Text-Mail schreiben? Noch zum PDF-Creater: Wenn ich mich nicht komplett irre, kannst du Programmiertechnisch den PDF- Creator so verwenden, dass KEINE Maske des PDF-Creators hoch kommt, dies wiederum heißt, dass der Endanwender nichts mitbekommt. Das habe ich bis jetzt noch nicht gefunden, in den Foren steht immer nur, das der Creator Speicherort und -name abfragt, egal wie man ihn programmiert. Dateien löschen sollte über Access schon gehen. kannst du mir auch hierfür den Code senden? ich bin noch nicht so fit in VBA, ich habe letzten Sommer damit angefangen, aber immer nur so "hier ist eine Aufgabe - mach mal" dann habe ich im Internet gesucht und gefunden. Da ich C, C++ und C# im Studium lerne, fällt mir das programmieren nicht so schwer, aber leider kenne ich die VBA-Syntax nicht ausreichend Danke für deine Hilfe, Nora Zitieren
HJST1979 Geschrieben 15. Februar 2011 Geschrieben 15. Februar 2011 (bearbeitet) Hallo hier sind ein paar Beispiel Access- Dateien MS Access Downloads Hier hat mir die "Knowhow 3.0" früher immer viel geholfen Löschen von Dateien http://forum.fachinformatiker.de/datenbanken/37159-datei-loeschen-access-per-vba.html Noch eine gute Seite für Access- Infos donkarls Access-Seiten Für den PDF-Creator-Test musst dir mal den PDF-Creator herunterladen und installieren. Achtung nicht vergessen die Programmierbeispiele mit zu installieren. Gruß Hans-Jörg Bearbeitet 15. Februar 2011 von HJST1979 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.