Clever-Excel-Forum

Normale Version: Excel Arbeitsmappe per Makro als .pdf Datei
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

kurz zur Situation:

1. Ich versuche alle eingeblendeten Blätter einer Excel-Arbeitsmappe am Speicherort der Excel-Arbeitsmappe als .pdf Datei abzuspeichern, per Marko (Button 1)

2. Gleiche wie 1., nur das die .pdf zusätzlich an ein email angehängt wird Outlook (Button 2)


Meine EXCEL Datei

Meine Datei Besteht aus bis zu 45 Tabellenblättern , die man jedoch individuell ein und ausblenden kann, 
je nach dem was man für ein bevorstehendes Projekt benötigt. Auch kann man per Makro bereits die xcel Datei versenden,
bzw die eingeblendeten Blätter ausdrucken.



Auch wenn ich nun schon einige Schnipsel zusammen habe für mein Vorhaben, kann ich sie irgendwie nicht zusammenbringen.

Ich freu mich sehr wenn mir jemand behilflich ist. 

Grüsse
Hallo,

... und Du glaubst wirklich, daß Dir jemand aufgrund Deines wunderschönen
bunten Bildchens helfen kann oder auch nur helfen will?
Hallo,

zu Nr. 1 mal ein Ansatz

Code:
Sub prcSpeichern()
   Dim lngC As Long
  
   With ThisWorkbook
      For lngC = 2 To .Worksheets.Count
         If .Worksheets(lngC).Visible Then
            .Worksheets(lngC).Copy
            ActiveWorkbook.ExportAsFixedFormat xlTypePDF, .Worksheets(lngC).Name
            ActiveWorkbook.Close False
         End If
      Next lngC
   End With
End Sub
(07.12.2016, 12:50)Käpt schrieb: [ -> ]Hallo,

... und Du glaubst wirklich, daß Dir jemand aufgrund Deines wunderschönen
bunten Bildchens helfen kann oder auch nur helfen will?

Hallo Herr Blaubär,

Ihre Frage ist wohl durch den Poster nach Ihnen in ausreichender Form beantwortet. 


Den Zusammenhang mit dem Screenshot erkenne ich auch nicht so recht. Soll das Sarkasmus sein oder so? Der dient dazu, die Hintergründe meines Vorhabens zu veranschaulichen. Was gibts damit für ein Problem?

Ich bitte um Hilfe anhand meiner Anfrage in meinem Post und nicht aufgrund des Sceenshots im Anhang. 


---
Offtopic:
Und da sie es so nett vormachen, hier auch eine kleine persönliche Note:
Wenn man nen Scheiss Tag hat sollte man mal unter Deck bleiben!
---

Hallo Steffl

vielen Dank für den Ansatz. Ich werde das mal testen und gebe dann gern Feedback hier. (sofern noch möglich)
Hi,

(07.12.2016, 15:12)davincy81 schrieb: [ -> ]Den Zusammenhang mit dem Screenshot erkenne ich auch nicht so recht. Soll das Sarkasmus sein oder so? Der dient dazu, die Hintergründe meines Vorhabens zu veranschaulichen. Was gibts damit für ein Problem?

es war ein versteckter Hinweis darauf, die Datei anstelle eines Screenshots zur Verfügung zu stellen, dann ist ein Hilfe einfacher möglich.

hier dazu ein Textbaustein, den ich als deutlicheren Hinweis immer verwende:
Also stelle bitte (D)eine (Beispiel-)Tabelle als Excel-Datei zur Verfügung oder stelle die relevanten Ausschnitte hier dar, siehe die als Wichtige Themen: markierten Forums-Beiträge.
Deine Mustertabelle sollte mindestens etwa 10-15 Datensätze haben, sensible Daten anonymisiert. Vom Aufbau her muss sie aber deinem Original gleichen.
Auch ein Wunschergebnis sollte dargestellt und als solches erkennbar sein.
Die farbigen Texte sind anklickbare Links:

Hier steht, wie es geht:
Beitrag 2 WICHTIG: Arbeitsmappen zur Verfügung stellen
Beitrag 3 WICHTIG: Tabellenausschnitte und VBA-Codes im Forum einstellen

Eine Bitte:
Anstatt Screenshots ist eine Datei oder ein Ausschnitt besser!
"Du gehst ja auch nicht in die Werkstatt und gibst ein Foto Deines kaputten Autos ab!"


Mich würde jetzt gerade z.B. das versenden per Mail interessieren. Kannst Du da bitte den Code dazu veröffentlichen?
Code:
Sub ExcelDateiSenden()
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String
'Aktive Arbeitsmappe wird als Mail gesendet
AWS = ThisWorkbook.FullName
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "xyz0@email.ch; xyz1@email.ch; xyz2@mokesa.ch"
.Subject = "Betreff und Dateiname v1.0|2017| " & Date & "|" & Time
.attachments.Add AWS
.Body = "Im Anhang Die Datei" & vbCrLf & vbCrLf & "Mit freundlichen Grüssen"
'Hier wird die Mail nochmals angezeigt
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'Mail.Send
End With
'Outlook schliessen
'OutApp.Quit
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub


@Rabe, 

danke für die Hinweise. 
Mit versteckten Hinweisen hab ich es eben nicht so.

oben der Code den ich aktuell für das versenden der excel Datei verwende. Ich habe bewusst einen genommen, den man noch bearbeiten kann vor dem versenden. Alternativ ginge auch das mail im Hintergrund ohne feedback zu verschicken. 

@Steffl

habe deinen Code mal Probiert. Funktioniert auf jedem Fall. Jedes Tabellenblatt wird einzeln als .Pdf unter "Dokumente" gespeichert. Soweit sogut  :19:

Wenn alle Tabellenblätter als ein einziges .pdf gespeichert werden, wäre es noch besser. Wobei ich aber mittlerweise Zweifel habe ob das überhaupt möglich ist.



Besten Dank schon mal bis hier her
Moin!
Zitat:Wenn alle Tabellenblätter als ein einziges .pdf gespeichert werden, wäre es noch besser. Wobei ich aber mittlerweise Zweifel habe ob das überhaupt möglich ist.

Um es mal mit dem alten Toyota-Spruch zu sagen:
Nichts ist unmööööglich ;)
Du musst die Blätter in ein Array schreiben, dann wird alles in eine PDF geschrieben.
Folgendes funktionierte in meinem Test (Rekordercode):
Code:
Sub RPP()
    Sheets(Array("Block", "Desktop")).Select
    Sheets("Block").Activate
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\RalfP\Desktop\Kalender.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
End Sub


Gruß Ralf
So, dass Ganze noch einmal gemäß Deines Wunsches in der Threaderöffnung "in schön", sprich professionell:

Sub RPP()
Dim arrSheets()
Dim wks As Worksheet, cnt As Integer
Application.ScreenUpdating = False

'sichtbare Tabellenblätter werden in ein Array geschrieben 
For Each wks In Worksheets
   If wks.Visible Then
      Redim Preserve arrSheets(0 To cnt)
      arrSheets(cnt) = wks.Name
      cnt = cnt + 1
   End If
Next

'Die Blätter werden in eine temporäre Mappe kopiert 
ThisWorkbook.Sheets(arrSheets).Copy
With ActiveWorkbook
   .ExportAsFixedFormat xlTypePDF, .Path & "MeinePDF"
   'temporäre Mappe wird geschlossen ohne zu speichern 
   .Close False
End With
End Sub

Gruß Ralf
unglaublich. Das funktioniert fabelhaft.

1000 Dank Rabe und Steffl

Mein Problem mit dem speichern als .pdf ist gelöst und gleichzeitig habe ich nun wieder ein bisschen mehr über das geilste Programm gelernt  :19: