Clever-Excel-Forum

Normale Version: Speichermakro in PDF
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo :)

Ich habe eine Excel mit 2 Seiten, möchte aber das die zweite Seite nur gespeichert wird sollte in Feld H83 eine Zahl grösser als 0 stehen und am liebsten als PDF auf einem Netzwerkpfad. Ich habe keine Ahnung ob dies überhaupt machbar ist. Huh
Die Steigerung, sollte das möglich sein, wäre dann das dass PDF direkt in einem Mail geöffnet wird.

Vielen Dank bereits im voraus.
Gruss
Hi,
schon mal die Suchenfunktion des Forums genutzt?
Speichern als PDF kommt ja häufig und die Bedingungen dort einzubauen, sollte kein Problem darstellen.
Ja, ist machbar

wir bräuchten nur mehr Infos z.B. eine Beispieldatei und den Bereich der als PDF gespeichert werden soll. Außerdem kann die PDF im Netzwerkordner automatisch einen Namen bekommen.

vllt kriegst du das aber auch mithilfe von GIDF hin (Google ist dein Freund)
Hallo :)

Ich habe nun Google und Forum intensiv durchforstet und konnte mir einen Code zusammenbasteln. Allerdings komme ich nun wirklich nicht drauf wie ich dem Code sagen kann das er mir die zweite Seite nur als pdf generieren soll wenn in Zelle H83 eine Zahl >0 steht. Ich hoffe hierbei darf ich auf euer Fachwissen zählen:


Code:
Sub PDF_per_EMail()

'** Dimensionierung der Variablen
Dim strPDF As String
Dim OutlookApp As Object, strEmail As Object

'** Vorgaben definieren
Set OutlookApp = CreateObject("Outlook.Application")
Set strEmail = OutlookApp.CreateItem(0)

'** Zeilenhöhe automatisch anpassen
ActiveSheet.Range("c25:c99").Rows.EntireRow.AutoFit

'** PDF erzeugen
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:="\\Netzwerkpfad\" & "Offerte" & "_" & Range("C18") & ".pdf", _
 Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, from:=1, To:=2, OpenAfterPublish:=True _

'** E-Mail versenden
strPDF = "\\Netzwerkpfad\" & "Offerte" & "_" & Range("C18") & ".pdf"
With strEmail
 .To = "info@mail.ch"
 .Subject = "PDF als Anlage" 'Betreffzeile
 .body = "Als Anlage die PDF-Datei"
 .Attachments.Add strPDF
 .Display
 '.Send 'Damit wir die E-Mail sofort versendet
 Kill strPDF
End With
 
'** Objektvariablen wieder löschen
Set OutlookApp = Nothing
Set strEmail = Nothing
End Sub



Irgendwie müsste bei "... from:=1, To:=2..." etwas wie "if H83>0" hin aber da komme ich nun auch mit meinen Recherchen nicht weiter. Confused
Hallo, :19:

du hast also 2 Tabellenblätter und möchtest das zweite Blatt als PDF speichern und versenden: :21:

Code:
Option Explicit
Sub PDF_per_EMail()
Dim strPDF As String
Dim OutlookApp As Object, strEmail As Object
' Hier den Pfad anpassen!!!!!!!
Const strPath As String = "C:\Temp\Offerte_"
With ThisWorkbook.Worksheets(2)
    If IsNumeric(.Range("H83").Value) And .Range("H83").Value > 0 Then
        .Range("c25:c99").Rows.EntireRow.AutoFit
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPath & .Range("C18") & ".pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
        Set OutlookApp = CreateObject("Outlook.Application")
        Set strEmail = OutlookApp.CreateItem(0)
        strPDF = strPath & .Range("C18") & ".pdf"
        With strEmail
            .To = "info@mail.ch"
            .Subject = "PDF als Anlage" 'Betreffzeile
            .Body = "Als Anlage die PDF-Datei"
            .Attachments.Add strPDF
            .Display
            '.Send 'Damit wir die E-Mail sofort versendet
            Kill strPDF
        End With
    End If
End With
Set OutlookApp = Nothing
Set strEmail = Nothing
End Sub

Wenn es ein anderes Tabellenblatt ist kannst du z. B. auch so schreiben: :21:

Code:
With ThisWorkbook.Worksheets("Tabelle2")

Den Namen gegebenenfalls anpassen.
Wenn du mit "Kill" arbeiten möchtest, dann aber nicht mit "OpenAfterPublish:=True" - das knallt, wenn du eine Datei löschen möchtest, die noch im PDF-Reader offen ist.

Infos auch hier: :21:

Workbook.ExportAsFixedFormat...

Worksheet.ExportAsFixedFormat...