Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Excel-Sheet füllen und als PDF speichern

Begonnen von noah, Dezember 04, 2016, 13:38:18

⏪ vorheriges - nächstes ⏩

noah

Hallo, ich bin damit beschäftigt, diverse Auswertungen, die bisher allesamt komplett in Excel gemacht wurden auf Access umzustellen. Als Ergebnis der Auswertungen werden überwiegend Diagramme erstellt, aber teilweise auch Tabellen mit den Daten, aus denen die Diagramme erzeugt werden. Ziel ist es eigentlich, die Auswertungen trotz der Umstellung auf Access optisch nicht zu verändern. Deshalb versuche ich, aus Access heraus per VBA eine Excel-Datei als Vorlage zu öffnen, die Werte einzutragen (die Diagramme werden dabei ja automatisch aktualisiert) und die Excel-Datei als PDF zu speichern und wieder zu schließen. Dies soll für jeweils bis zu 18 Auswertungen in einer Schleife geschehen, der Speicherort und der Dateiname wird dabei jeweils automatisch neu erstellt bzw. geändert. Die Excel-Datei öffne und beschreibe ich wie folgt (das funktioniert auch super und schnell):


SUB Schleife()

Dim xlAPP As Object
Dim xlWB As Object

Set xlAPP = CreateObject("Excel.Application")
    xlAPP.Visible = False
    xlAPP.DisplayAlerts = False
    xlAPP.ScreenUpdating = False
   
    XLDATEI = Application.CurrentProject.Path & "\Reportvorlagen\REPORT_FuRW_I.xlsx"
    Set xlWB = xlAPP.workbooks.Open(XLDATEI, , True)
   
        For i = 11 To 36 Step 1
            If VBA.Right(i, 1) = 7 Then i = i + 4
            If Me.Controls("KTRF" & i).VALUE = True Then
               
                'Hier wird das Excel-Sheet beschrieben
               
                DATEINAME = "DiplaCo Monatsauswertung FuRW " & Format(ZEITRAUM, "YYYY-MM") & " F" & i & " Teil 1.pdf"
                SPPFAD = PFAD_PRUEFEN("G:\F02\F023\F0235\F0235_Auswertungen_+_Reports\Monatsauswertungen Wachen\TESTWACHEN\F" & i & "\" & Format(ZEITRAUM, "YYYY"))
   
                'DoCmd.OpenReport "MONATSBERICHT_FuRW_I", View:=acViewPreview, WindowMode:=acDialog, OpenArgs:="F" & i & " - " & ZEITRAUM
   
                'Excel-Sheet als PDF speichern !!!!! Wie auch immer...
               
               
                'PDF per E-Mail versenden !!!!! Wie auch immer...
               
                'DoCmd.Close acReport, "MONATSBERICHT_FuRW_I", acSaveNo
               
                CHKBX = True
               
            End If
        Next i

    xlWB.Close False
    Set xlWB = Nothing
   
    xlAPP.ScreenUpdating = True
    xlAPP.DisplayAlerts = True
    xlAPP.Quit
    Set xlAPP = Nothing

end Sub


Wie aber kann ich jetzt die Excel-Datei, bzw. ein bestimmtes Sheet der Excel-Datei von Access aus per VBA als PDF speichern (und anschließend mit Outlook per E-Mail versenden)? Ich habe schon eine Weile gesucht und auch Ansätze gefunden, die aber allesamt zu Fehlermeldungen geführt haben.

MaggieMay

Hallo,

Zitat'Excel-Sheet als PDF speichern !!!!! Wie auch immer...
'PDF per E-Mail versenden !!!!! Wie auch immer...

schau dir dazu mal die SendObject-Methode in der Access-Hilfe an, die sollte das eigentlich bieten.

Oder du erzeugst nach dem Öffnen des Berichts zunächst die PDF-Datei mit der OutputTo-Methode und versendest diese per Automatisierung von Outlook.
Auch hierzu sollten sich zahllose Beispiele hier im Forum finden lassen.
Stichwörter: Outlook.Application und Attachment

PS:
Wenn du Ansätze gefunden hast, die bei dir zu Fehlern führten, so zeige den Code und nenne die Fehlermeldungen, das wäre wohl einfacher und zielführender als bei Null anzufangen.
Freundliche Grüße
MaggieMay

noah

Danke schon mal für die Antwort.

u.a. hatte ich es mit

xlWB.Worksheets(1).ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
                  PFAD & PDFNAME _
                  , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
                  :=False, OpenAfterPublish:=SHOWAFTERSAVE

vesucht, da hatte Access 'xlTypePDF' als nicht deklarierte Variable bemängelt. Das lag aber, wie ich jetzt herausgefunden habe an einem nicht aktivierten Add-on. Mittlerweile funktioniert es so.

Insgesamt empfinde ich das allerdings als sehr langsam. Kann mir jemand (aus seiner Erfahrung) sagen, ob die Ausgabe und Speicherung direkt in Access ohne den Umweg über Excel schneller ist?


markusxy

Access vs Excel ist kein guter Vergleich.
Aber ein Report mit weniger als 2 Seiten, sollte immer im Bereich < 0.25 Sekunden liegen.
Auch komplexe Reports mit 30 Seiten sollten nicht mehr als 1 - 2 Sekunden dauern.

LG Markus