Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
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

VBA Hilfe

VBA Hilfe
20.02.2023 12:43:17
sam
Hallo Zusammen,
brauche dringen Hilfe bei folgendem VBA .
Das hat mal bei einem Projekt funktioniert, jetzt leider aber nicht.
Das Register wo die VBA in Aktion treten soll, ist das Register "Outbound", diese Excelseite soll von Spalte A bis T in der Email als Anhang generiert werden ,
das heisst der Anhang muss immer alle Zeilen enthalten die gefüllt sind, da eine Tabellle die sich mit der Zeit weiter Füllen wird !
Zudem soll eine PDF generiert werden über die gesamte "Outbound"tabelle jedoch in PDF.
Kann mir jemand mit dem Code helfen?! Bzw. einen neuen Code zur Verfügung stellen wenn dieser nicht zu gebrauchen ist ..

Sub UATEmailReportingexcelundpdfHTmLAuto()
'** Dimensionierung der Variablen
Dim strPDF As String
Dim OutlookApp As Object, strEmail As Object
Dim olOldbody As String
Dim olApp   As Object
  Dim AWS     As String
'** Vorgaben definieren
Set OutlookApp = CreateObject("Outlook.Application")
Set strEmail = OutlookApp.CreateItem(0)
AWS = Environ("USERPROFILE") & "\Desktop\Reporting-Outbound.xlsx"
'** PDF erzeugen
  ThisWorkbook.Sheets("Outbound").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  ThisWorkbook.Path & "\UserAcceptanceTestReport.pdf", Quality:=xlQualityStandard _
  , IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
  :=False
  
'** Excel erzeugen
ThisWorkbook.Sheets(Array("Outbound")).Copy
  
  Application.DisplayAlerts = False
     With ActiveWorkbook
         .SaveAs Filename:=AWS, FileFormat:=xlOpenXMLWorkbook
         .Close savechanges:=False
     End With
  Application.DisplayAlerts = True
'** E-Mail versenden
strPDF = ThisWorkbook.Path & "\Reporting-Outbound.pdf"
Set olApp = CreateObject("Outlook.Application")
      With olApp.CreateItem(0)
With strEmail
.Attachments.Add strPDF
.Attachments.Add AWS
  .To = ""
  .Subject = "1000erKunden-Outbound-Report Stand:" & Range("AA1")
  .GetInspector
  olOldbody = .htmlBody
      .BodyFormat = 2 'olFormatHTML
      .htmlBody = " Hallo Zusammen,


" _ & "anbei das aktuelle
Outbound-Reporting inkl. aller Kundenreaktionen im Anhang.


" _ & "Sollten sich Rückfragen zu dem Thema ergeben, gerne melden.

" _ & olOldbody .Display '.Send 'Damit wir die E-Mail sofort versendet ' Kill strPDF End With '** Objektvariablen wieder löschen Set OutlookApp = Nothing Set strEmail = Nothing End With End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Hilfe
20.02.2023 13:40:49
sam
Wenn ich die VBA durchteste kommt immer zu dieser Zeile
.SaveAs Filename:=AWS, FileFormat:=xlOpenXMLWorkbook
ein Laufzeitfehler 1004 kann nicht auf die die Datei zugreifen. C:\Users\xxx\Desktop\D8564563´
weis jemand wieso ?
Sub UATEmailReporting2excelundpdfHTmLAuto()
'** Dimensionierung der Variablen
Dim strPDF As String
Dim OutlookApp As Object, strEmail As Object
Dim olOldbody As String
Dim olApp   As Object
  Dim AWS     As String
'** Vorgaben definieren
Set OutlookApp = CreateObject("Outlook.Application")
Set strEmail = OutlookApp.CreateItem(0)
AWS = Environ("USERPROFILE") & "\Desktop\Reporting-Outbound.xlsx"
'** PDF erzeugen
  ThisWorkbook.Sheets("Outbound").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  ThisWorkbook.Path & "\Reporting-Outbound.pdf", Quality:=xlQualityStandard _
  , IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
  :=False
  
'** Excel erzeugen
ThisWorkbook.Sheets("Outbound").Range("A1:O" & Sheets("Outbound").Cells(Rows.Count, 1).End(xlUp).Row).Copy
  
  Application.DisplayAlerts = False
     With ActiveWorkbook
         .SaveAs Filename:=AWS, FileFormat:=xlOpenXMLWorkbook
         .Close savechanges:=False
     End With
  Application.DisplayAlerts = True
'** E-Mail versenden
strPDF = ThisWorkbook.Path & "\Reporting-Outbound.pdf"
Set olApp = CreateObject("Outlook.Application")
      With olApp.CreateItem(0)
With strEmail
.Attachments.Add strPDF
.Attachments.Add AWS
  .To = "bboehner@dela.de; kmehner@dela.de"
  .Subject = "1000erKunden-Outbound-Report Stand:" & Range("AA1")
  .GetInspector
  olOldbody = .htmlBody
      .BodyFormat = 2 'olFormatHTML
      .htmlBody = " Hallo Zusammen,


" _ & "anbei das aktuelle
Outbound-Reporting inkl. aller Kundenreaktionen im Anhang.


" _ & "Sollten sich Rückfragen zu dem Thema ergeben, gerne melden.

" _ & olOldbody .Display '.Send 'Damit wir die E-Mail sofort versendet ' Kill strPDF End With '** Objektvariablen wieder löschen Set OutlookApp = Nothing Set strEmail = Nothing End With End Sub

Anzeige
AW: VBA Hilfe
20.02.2023 18:42:57
ralf_b
Laufzeitfehler 1004 - prüfe deinen Pfad ob der so existiert, oder ist die Datei geöffnet und deshalb gesperrt.
AW: VBA Hilfe
21.02.2023 19:04:16
Yal
Hallo Sam,
wenn Du intensiv mit einer Bibliothek arbeitest, ist es dann sinnvoll, diese "anzubinden": in VB-Editor unter "Extras", "Verweise...", Haken bei "Microsoft Outlook 16 Object Library" setzen. So hast Du den IntelliSense, d.h. die Vorschläge für Methode und Eigenschaften von Outlook-Objekte und auch die Outlook-Objekte in dem Objekt-Katalog.
Wenn Du die Variable an der richtige Stelle verwendest, ergibt sich mehr Sinn und weniger Wiederholung: "olAPP" und "OutlookApp" sind eigentlich dasselbe. Kein Grund 2 Variable zu verwenden. strPDF (den ich als "PfadPDF" sprechender finde, aber nur meine Meinung) könnte am Anfang definiert werden und schon beim Speichern verwendet werden.
Achte auf das Einrücken: jeder Blockinhalt "With", "If", "For" eine Stelle nach rechts bis Blockende.
Hier dein Code "bereinigt":
(den ".Copy" ohne "Paste" habe ich drin gelassen, hat aber keine Wirkung)
Sub UATEmailReporting2excelundpdfHTmLAuto()
'Unter Anbindung ("Extras", "Verweise...") der Bibliothek "Microsoft Outlook 16 Object Library"
Dim PfadPDF As String
Dim OutlookApp As New Outlook.Application 'Instanzierung bei der Deklaration
Dim Email As MailItem
Dim olOldbody As String
Dim PfadAWS As String
'** PDF erzeugen
    PfadPDF = ThisWorkbook.Path & "\Reporting-Outbound.pdf"
    ThisWorkbook.Sheets("Outbound").ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=strPDF, Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
  
'** Excel erzeugen
    PfadAWS = Environ("USERPROFILE") & "\Desktop\Reporting-Outbound.xlsx"
    With ThisWorkbook.Sheets("Outbound")
        Range(.Range("O1"), .Cells(Rows.Count, 1).End(xlUp)).Copy 'Copy ohne Paste?
        
        Application.DisplayAlerts = False
        With ActiveWorkbook
            .SaveAs Filename:=AWS, FileFormat:=xlOpenXMLWorkbook
            .Close savechanges:=False
        End With
        Application.DisplayAlerts = True
    End With
    
'** E-Mail versenden
    Set Email = OutlookApp.CreateItem(olMailItem)
    With Email
        .Attachments.Add PfadPDF
        .Attachments.Add PfadAWS
        .To = "bboehner@dela.de; kmehner@dela.de"
        .Subject = "1000erKunden-Outbound-Report Stand:" & Range("AA1")
        .GetInspector
        olOldbody = .htmlBody
        .BodyFormat = 2 'olFormatHTML
        .htmlBody = " Hallo Zusammen," & vbLf & vbLf _
            & "anbei das aktuelle Outbound-Reporting inkl. aller Kundenreaktionen im Anhang." & vbLf _
            & "Sollten sich Rückfragen zu dem Thema ergeben, gerne melden. " & vbLf _
            & olOldbody
        .Display
        '.Send 'Damit wir die E-Mail sofort versendet
    End With
    ' Kill PfadPDF
  
'** Objektvariablen wieder löschen
    Set OutlookApp = Nothing
    Set Email = Nothing
End Sub
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige