Ich habe meine Dateien mit File2PDF umgewandelt. Batch Aufruf aus Access läuft tadellos. Jetzt möchte ich die PDF Dateien am besten gleich nach dem Umwandeln per Mail (Outlook über Exchange) versenden lassen. Schön wäre es ohne das der Benutzer der Access Anwendung noch etwas machen muss. Wie kann ich das anstellen?
Auch Wolkenkratzer haben mal als Keller angefangen.
Private Sub cmdMail_versenden_Click() 'Email an Kontakt senden 'leicht abgewandelte Kopie aus der MS Auto97.hlp
Dim objOutlook As Outlook.Application Dim objOutlookMsg As Outlook.MailItem Dim objOutlookRecip As Outlook.Recipient Dim objOutlookAttach As Outlook.Attachment 'Variablen für die Übergabe Dim Empf As String 'An: Dim CC As String 'CC: Dim BCC As String 'BCC: Dim Betreff As String Dim Nachricht As String Dim ATT 'Dateipfad zum Attachment Dim olVorlage As String Dim rec As Recordset Dim I As Long, Q As Long
10 On Error GoTo Ansicht_Serienbrief_EMail_Click_Error
20 If IsNull(txtBetreff) Then 30 MsgBox "Bitte unbedingt den Betreff ausfüllen!", vbCritical 40 Exit Sub 50 End If
Empf = "toVorname.Nachname@domain.de"
100 Betreff = txtBetreff 110 If Betreff = "" Then Exit Sub
' Create the Outlook session. 160 Set objOutlook = CreateObject("Outlook.Application")
' Create the message. 170 Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
180 With objOutlookMsg
' Add the To recipient(s) to the message. 190 Set objOutlookRecip = Empf objOutlookRecip.Type = olTo
' Set the Subject, Body, and Importance of the message. 210 .Subject = Betreff .Body = Nachricht 'Nur Text 220 '.HTMLBody = Me.WBrowser.Object.Document.body.innerHTML
'.Categories = "Test" 'Abstimmungs-Schaltflächen '.VotingOptions = "Stimme zu!;Lehne ab!; Ist mir Wurscht!"
' Ein Attachment zur Mail hinzufügen. '==================================== ' If ATT "" Then ' Set objOutlookAttach = .Attachments.Add(ATT) ' End If
'Wenn mehrere Attachment's zur Mail hinzufügen. '==============================================
240 For Q = 0 To cmbAnlagen.ListCount - 1 250 Set objOutlookAttach = .Attachments.Add(cmbAnlagen.ItemData(Q)) 260 Next
340 Select Case Err.Number Case 52 350 MsgBox "Datei nicht gefunden !" 360 Exit Sub 370 Case 9 380 Exit Sub 390 Case 99 400 Exit Sub 'Wenn Abbrechen gewählt wurde im Dateiauswahldialog 410 Case Else 420 MsgBox "Fehlernr.: " & Err.Number & " (" & Err.Description & ") in Prozedur cmdMail_versenden von Modul Funktionen", , "Fehler in Zeile: " & Erl 430 End Select
End Sub
Code kann Fehler enthalten, weil ich es ein bisschen angepasst habe.
Oder wenn du es global für mehrere Programme haben möchtest, dann über ein VBSript.
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF) File2PDF (komplette Verzeichnisse auf einen Streich umwandeln) findest Du alles hier: http://amTools.de
Dim objOutlook As Outlook.Application Dim objOutlookMsg As Outlook.MailItem Dim objOutlookRecip As Outlook.Recipient Dim Betreff As String: Betreff = "tägliche Statistiken" Dim Nachricht As String, An As String, ATT1, ATT2 Dim db As Database, rs As Recordset
'DoCmd.Echo False, "Visual Basic-Code wird ausgeführt." On Error Resume Next
'Berichte als Anlage für Outlook generieren
'Mailobjekt erstellen Set objOutlook = CreateObject("Outlook.Application") Set objOutlookMsg = objOutlook.CreateItem(0)
'Tabelle "Verteiler3" auslesen. Set db = CurrentDb Set rs = db.OpenRecordset("Verteiler3", dbOpenDynaset) DoCmd.Echo True If rs.EOF Then MsgBox "Keine Empfänger im Verteiler", vbExclamation: GoTo Ex
With objOutlookMsg 'Durch alle Empfänger Do While Not rs.EOF An = Nz(rs!Name, "") If An "" Then .Recipients.Add An rs.MoveNext Loop 'Inhalt des Mails festlegen .Importance = 2 ' hohe priorität .Subject = Betreff .HTMLBody = Nachricht 'HTML-Format .Attachments.Add ATT1 'Berichte anhängen .Attachments.Add ATT2
For Each objOutlookRecip In .Recipients objOutlookRecip.Resolve 'Namen überprüfen Next '.Display '= Nachricht wird angezeigt .Send ' = Nachricht wird sofort gesendet End With
Ex: On Error Resume Next rs.Close Set objOutlook = Nothing 'Verzeichnis und Dateien werden gelöscht 'Kill "G:Verz1Verz2tempPDF*.*" 'Kill "G:Verz1Verz2tempBerichte*.*" 'RmDir "G:Verz1Verz2temp" Exit Function
Er: MsgBox Err.Description Resume Ex End Function
und um zu verhindern, dass Outlook die Dateien versendet bevor das Umwandeln fertig ist, ist diese Function nötig.
Option Compare Database
Public Declare Sub Sleep _ Lib "Kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function GetProcessVersion _ Lib "Kernel32" (ByVal ProcessId As Long) As Long
Läuft auf Access 2003 und Win7 prof hervoragend. Ich wandel damit 31 Access Berichte von snp in pdf um und versende an 12 eMail Adressen vollautomatisch.[/code]
Auch Wolkenkratzer haben mal als Keller angefangen.
Danke für die Info und für die Deinen Programmcode.
Anzumerken wäre für alle nachfolgenden Leser, dass die Umwandlung mittels meinem Programm File2PDF erfolgt.
Gruß A. Martens
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF) File2PDF (komplette Verzeichnisse auf einen Streich umwandeln) findest Du alles hier: http://amTools.de