Moin Moin,
Ich erstelle aktuell ein Makro um Kollegen an nachstehender Stelle 50 Aktenordner im Jahr zu sparen.
Nun habe ich 50% des Makros fertig, bzw. eine der beiden Aktionen vollendet, für die andere muss ich das nun bestehende nur minimal anpassen wie folgt:
Befehl 1, druckt den definierten Druckbereich als PDF, filtert vorher eine Hilfsspalte auf die Farbe gelb, erstellt die PDF, exportiert sie in ein vorgefertigten Outlook-Element, dessen Grundsatzdaten jeweils auf dem aktiven Tabellenblatt angegeben werden (Empfänger, CC, Betreff).
Der Druckbereich ist hier Spalte A : W
Für den zweiten Befehl darf der Druckbereich allerdings nur A:D lauten, da die Kollegin hier einen für mich unsinnigen Extrawunsch hat, aber das war die Bedingung, dass mir überhaupt Gehört geschenkt wurde, dass man die Aktenberge doch abschaffen könne.
Folgend der denke ich wichtige Bereich des Makros:
Rem PDF-Datei erstellen. Funktioniert nur in Excel 2007 oder höher, nicht in Excel 2003 oder älter
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=IIf(pdfOpenAfterPublish, True, False)
Lässt sich hier oder in einem vorangehenden Schritt der Druckbereich begrenzen? Bei meinen Versuchen mit ActiveSheet oder Range(X,Y).select bin ich immer nur auf Fehler gestoßen, eventuell kann ein Befehl ja nicht zweimal mit ActiveSheet.xyz im gleichen Schritt arbeiten, bin allerdings noch ein relativer Excelneuling.
Hier das komplette Makro, XYZ habe ich geschwärzt, da hier Firmendaten enthalten sind ^^:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wksSheet As Worksheet
For Each wksSheet In ThisWorkbook.Worksheets
With wksSheet
If .AutoFilterMode Then
If .FilterMode Then
.ShowAllData
End If
End If
End With
Next wksSheet
End Sub
Sub AlsPDFVersenden()
Dim pdfName As String
Dim pdfOpenAfterPublish As Boolean
Dim olApp As Object
'
' Filter_Reklamation Makro
'
' Tastenkombination: Strg+Umschalt+O
'
ActiveSheet.Range("$V$6:$W$28").AutoFilter Field:=1, Criteria1:=RGB(255, _
255, 0), Operator:=xlFilterCellColor
Rem Rückfragen, ob Datei nach dem Erstellen geöffnet werden soll
If MsgBox("Bitte die PDF vor dem Absenden der E-Mail kontrollieren!", vbYes, "PDF anzeigen") = vbYes Then pdfOpenAfterPublish = True
Rem Pfad und Name der PDF-Datei
pdfName = ThisWorkbook.Path & "\PDFs/" & ActiveSheet.Name & ".pdf"
Rem PDF-Datei erstellen. Funktioniert nur in Excel 2007 oder höher, nicht in Excel 2003 oder älter
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=IIf(pdfOpenAfterPublish, True, False)
Rem Email erstellen
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.To = Range("U5").Value
.Subject = "Contract " & Range("N1").Value & " //Broker contract " & Range("N2") & " //Delivery destination " & Range("N4").Value 'Betreffzeile
.htmlBody = "
Good afternoon," & "enclosed you´ll find an overview of your delivered quantities to the above mentioned contract with XYZ.
" & "Please only understand the yellow marked qualities as claim. " & "
Please mention the broker contract orXYZ contract number on your invoices, it would help us to process your invoices faster." & "
Best regards!"
'Emailtext
.Attachments.Add pdfName
.Display
End With
Rem Boolean-Variable "pdfOpenAfterPublish" zurücksetzen
pdfOpenAfterPublish = False
End Sub
_________________________________-
Für jede Hilfe dankbar,
Lieben Gruß!