Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1192to1196
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel vs FreePDF vs Outlook 2003

Excel vs FreePDF vs Outlook 2003
SE4ever
Hallo an alle im Forum.
Ich benötige Eure Hilfe, leider komme ich hier nicht weiter.
Auf meiner Arbeitsstelle benötigen wir eine Exceldatei, in welcher Zulasssungsdaten für Anwendungen gespeichert sind.
Wenn sich dort Änderungen ergeben, müssen wir die zuständige Stelle informieren.
Nun möchte ich diesen Vorgang dahingehend automatisieren, daß ich über das beigefügte Makro
- das Tabellenblatt "Anschreiben" in der Exceldatei über "FreePDF" als pdf-Datei drucke/ speichere und
- diese pdf-Datei dann als Anlage automatisch in Outook 2003 in eine neue Email einfüge und
- die Emailadresse des Empfängers einfüge sowie
- den Betreff und als letztes
- einen kurzen Text mit Verweis auf die beigefügte Anlage
Bei dem Makro bekomme ich jedoch eine Fehlermeldung bei Ausführung der Zeile ".Attachments.Add Datei".
Dies liegt wohl daran, daß ich nicht angegeben habe, wo die Datei gespeichert werden soll. Wie muß ich diesbezüglich vorgehen?
Wie muß ich in dem Makro angeben, wo die Datei liegt (im Idealfall auf C:\Daten"), damit sie als Anlage in Outlook angehängt werden kann?
Könnt Ihr mir dabei helfen? Das wäre super!!
-----------------------------------------------------------
Hier nun mein bisheriger Code:
-----------------------------------------------------------

Sub Drucker_Email_Dateneingabe()
' vom Formular "Dateneingabe" aus
' unter "Extras / Verweise" die "Microsoft Outlook 11.0 Object Library" aktivieren!
Dim Drucker As String
Dim Datei As String
Dim olApp As Outlook.Application
Application.ScreenUpdating = False
Sheets("Anschreiben").Select
Drucker = Application.ActivePrinter
Application.Dialogs(xlDialogPrinterSetup).Show
ActiveSheet.PrintOut 'From:=1
Application.ActivePrinter = Drucker
''''Versenden mit Outlook
Set olApp = Outlook.Application
With olApp.CreateItem(olMailItem)
.To = " testadresseaettgmxde
.Subject = "Änderung in Anwendung Eva"
.Body = "Diese E-Mail Nachricht wird automatisch verarbeitet." & vbCrLf & vbCrLf & _
"Zum Versand klicken Sie Bitte auf die Schaltfläche " & vbCrLf & vbCrLf & _
"Beachten Sie bitte die angehängte Anlage!" & vbCrLf & vbCrLf & _
"Sachbearbeiter"
.Attachments.Add Datei
.Display
.Display
End With
Set olApp = Nothing
Sheets("Anschreiben").Select
Application.ScreenUpdating = True
End Sub

-----------------------------------------------------------
Gruß,
SE4ever

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Excel vs FreePDF vs Outlook 2003
15.01.2011 13:58:35
Josef

Hallo ?,
in Ermangelung von FreePDF, total ungetestet!

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function OpenProcess Lib "kernel32" _
  (ByVal dwDesiredAccess As Long, _
  ByVal bInheritHandle As Long, _
  ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
  (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
  (ByVal hObject As Long) As Long

Public Function ps2PDF(psFile As String, pdfFile As String) As Boolean
  If Dir(psFile) <> "" Then
    Dim FreePDF
    'FreePDF festlegen
    FreePDF = Environ("programfiles") & "\freepdf_xp\freepdf.exe"
    'Prüfen, ob FreePDF vorhanden ist
    If Dir(FreePDF) <> "" Then
      'FreePDF aufrufen
      If ShellAndWait(FreePDF & " /3 delps,end ""eBook"" " & """" & pdfFile & """ """ & psFile & """") = 0 Then
        'Aufruf erfolgreich
        ps2PDF = True
      End If
    Else
      MsgBox "FreePDF ist nicht unter " & FreePDF & " installiert", vbExclamation
    End If
  End If
End Function

Private Function ShellAndWait(Befehl As String) As Integer
  Dim hProcess As Long
  Dim ProcessId As Long
  Dim exitCode As Long
  Dim x, y
  
  ProcessId = Shell(Befehl, vbNormalFocus)
  hProcess = OpenProcess(&H400, False, ProcessId)
  
  Do 'Warten auf Ende der Konvertierung
    Call GetExitCodeProcess(hProcess, exitCode)
    '0,5 Sekunden Warten:
    DoEvents
    Sleep 500
  Loop While exitCode = &H103&
  
  Call CloseHandle(hProcess)
  
  ShellAndWait = exitCode
End Function

Sub Drucker_Email_Dateneingabe()
  ' vom Formular "Dateneingabe" aus
  ' unter "Extras / Verweise" die "Microsoft Outlook 11.0 Object Library" aktivieren!
  
  Dim Drucker As String
  Dim strPDF As String, strPS As String
  Dim olApp As Outlook.Application
  Dim objWB As Workbook
  
  On Error GoTo ErrExit
  With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
    .EnableEvents = False
  End With
  
  strPDF = "C:\Daten\Anschreiben.pdf"
  strPS = "C:\Daten\Anschreiben.ps"
  
  Set objWB = Sheets("Anschreiben").Copy
  
  Drucker = Application.ActivePrinter
  Application.Dialogs(xlDialogPrinterSetup).Show
  objWB.PrintOut , printToFile:=strPS
  Application.ActivePrinter = Drucker
  
  objWB.Close , False
  
  If ps2PDF(strPS, strPDF) Then
    ''''Versenden mit Outlook
    Set olApp = Outlook.Application
    
    With olApp.CreateItem(olMailItem)
      .To = " testadresseaettgmxde"
      .Subject = "Änderung in Anwendung Eva"
      .Body = "Diese E-Mail Nachricht wird automatisch verarbeitet." & vbCrLf & vbCrLf & _
        "Zum Versand klicken Sie Bitte auf die Schaltfläche " & vbCrLf & vbCrLf & _
        "Beachten Sie bitte die angehängte Anlage!" & vbCrLf & vbCrLf & _
        "Sachbearbeiter"
      .Attachments.Add strPDF
      .Display
    End With
  Else
    MsgBox "Fehler bei PDF - Erstellung!"
  End If
  
  
  ErrExit:
  If Dir(strPS, vbNormal) <> "" Then Kill strPS
  If Dir(strPDF, vbNormal) <> "" Then Kill strPDF
  
  With Application
    .ScreenUpdating = True
    .DisplayAlerts = True
    .EnableEvents = True
  End With
  
  Set objWB = Nothing
  Set olApp = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Excel vs FreePDF vs Outlook 2003
15.01.2011 14:07:57
SE4ever
Hallo Sepp!
Danke für die schnelle Antwort.
Ich Dein Makro am Montag (habe die Datei privat nicht zur Hand) testen und melde mich dann wieder!
Gruß und noch ein schönes Wochenende,
Dirk
(SE4ever)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige