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.
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.
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?
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