Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1736to1740
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

PivotTabellen aktualisieren bevor vba skript durchläuft

PivotTabellen aktualisieren bevor vba skript durchläuft
03.02.2020 11:35:53
Julian
Hallo zusammen.
ich habe ein vbskript welches eine Excel Datei öffnet, ein vba skript ausführt und die excel wieder schließt.
Das VBA erstellt aus der Excel (wo Pivot Tabellen enthalten sind) eine PDF Datei und versendet diese per Mail.
Wenn ich jetzt mein VBSkript ausführe führt dieses das VBA direkt aus, ohne dass sich die Pivot Tabellen aktualisieren (was zwingend sein muss).
Die Einstellung (Pivot Tabellen beim öffnen automatisch aktualsieren, hilft dabei leider nicht.
Hat jemand eine Idee ?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PivotTabellen aktualisieren bevor vba skript durchläuft
03.02.2020 11:52:16
Nepumuk
Hallo Julian,
versuch es mal so:
Public Sub Beispiel()
    
    Dim objWorkbook As Workbook
    Dim objWorksheet As Worksheet
    Dim objPivotTable As PivotTable
    
    Set objWorkbook = Workbooks.Open(Filename:="H:\Test.xlsx")
    
    For Each objWorksheet In objWorkbook.Worksheets
        
        For Each objPivotTable In objWorksheet.PivotTables
            
            Call objPivotTable.RefreshTable
            
        Next
    Next
    
    ' hier dein Code zum kopieren
    
    Call objWorkbook.Close(SaveChanges:=True)
    
    Set objWorkbook = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
AW: PivotTabellen aktualisieren bevor vba skript durchläuft
03.02.2020 12:11:25
Julian
Danke.
wenn ich jetzt mein vbskript ausführe, sehe ich im Taskmanager das was gemacht wird, aber nicht final.
Mein Code sieht aktuell so aus:
Public Sub Beispiel()
Dim objWorkbook As Workbook
Dim objWorksheet As Worksheet
Dim objPivotTable As PivotTable
Set objWorkbook = Workbooks.Open(Filename:="H:\Test.xlsx")
For Each objWorksheet In objWorkbook.Worksheets
For Each objPivotTable In objWorksheet.PivotTables
Call objPivotTable.RefreshTable
Next
Next
Dim PdfFileName As String
Dim Outlapp As Object, myMail As Object
Dim title, mailTo, mailCc, mailBody As String
title = "Daily Support Report " + Date$
counter = Range("PivotDaten!A1").Value
mailTo = "hueskes@itb-pim.de"
mailCc = "hueskes@itb-pim.de"
mailBcc = "hueskes@itb-pim.de"
mailBody = "Hallo Freunde"
PdfFileName = "Daily_Support_Report_" + Date$ + ".pdf"
SheetstoMail = Array("Zusammenfassung")
ActiveWorkbook.RefreshAll
Sheets(SheetstoMail).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFileName, Quality:= _
xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
On Error Resume Next
Set Outlapp = CreateObject("Outlook.Application")
Set myMail = objOutlook.CreateItem(0)
IsCreated = True
Outlapp.Visible = True
On Error GoTo 0
With myMail
.To = "hueskes@itb-pim.de"
.Subject = title & " Offen: " & counter
.Cc = "hueskes@itb-pim.de"
.Bcc = "hueskes@itb-pim.de"
.Body = "Hallo Freunde"
.Attachments.Add = PdfFileName
.send
Application.OnTime TimeSerial(0, 1, 0), "PdfAndMail"
End With
Call objWorkbook.Close(SaveChanges:=True)
Set objWorkbook = Nothing
End Sub

Anzeige
AW: PivotTabellen aktualisieren bevor vba skript durchläuft
03.02.2020 12:27:55
Nepumuk
Hallo Julian,
"aber nicht final" was soll ich darunter verstehen?
Gruß
Nepumuk
AW: PivotTabellen aktualisieren bevor vba skript durchläuft
03.02.2020 12:38:33
Julian
Es wird keine Email versendet.
AW: PivotTabellen aktualisieren bevor vba skript durchläuft
03.02.2020 12:52:53
Nepumuk
Hallo Julian,
teste damit:
Option Explicit

Public Sub Beispiel()
    
    Dim objWorkbook As Workbook
    Dim objWorksheet As Worksheet
    Dim objPivotTable As PivotTable
    
    Dim PdfFileName As String
    Dim Outlapp As Object, myMail As Object
    Dim title As String, mailTo As String, mailCc As String
    Dim mailBody As String, mailBcc As String
    Dim counter As Long
    Dim SheetstoMail As Variant
    
    Set objWorkbook = Workbooks.Open(Filename:="H:\Test.xlsx")
    
    For Each objWorksheet In objWorkbook.Worksheets
        
        For Each objPivotTable In objWorksheet.PivotTables
            
            Call objPivotTable.RefreshTable
            
        Next
    Next
    
    title = "Daily Support Report " & Date$
    counter = Range("PivotDaten!A1").Value
    mailTo = "hueskes@itb-pim.de"
    mailCc = "hueskes@itb-pim.de"
    mailBcc = "hueskes@itb-pim.de"
    mailBody = "Hallo Freunde"
    
    PdfFileName = "Daily_Support_Report_" + Date$ + ".pdf"
    SheetstoMail = Array("Zusammenfassung")
    
    Call objWorkbook.RefreshAll
    
    Sheets(SheetstoMail).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFileName, Quality:= _
        xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
    
    Set Outlapp = CreateObject("Outlook.Application")
    Set myMail = Outlapp.CreateItem(0)
    
    Outlapp.Visible = True
    
    With myMail
        .To = "hueskes@itb-pim.de"
        .Subject = title & " Offen: " & CStr(counter)
        .Cc = "hueskes@itb-pim.de"
        .Bcc = "hueskes@itb-pim.de"
        .Body = "Hallo Freunde"
        Call .Attachments.Add(PdfFileName)
        Call .Send
        
        Call Application.OnTime(TimeSerial(0, 1, 0), "PdfAndMail")
        
    End With
    
    Call objWorkbook.Close(SaveChanges:=True)
    
    Set myMail = Nothing
    Set Outlapp = Nothing
    Set objWorkbook = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
AW: PivotTabellen aktualisieren bevor vba skript durchläuft
03.02.2020 13:55:30
Julian
Hi,
danke für die schnelle Rückmeldung.
Nachdem ich den Part Oulapp.Visible entfernt habe wird die Mail auch versendet. Ich werde dies morgen erneut testen und melde mich dann nochmal
AW: PivotTabellen aktualisieren bevor vba skript durchläuft
04.02.2020 09:23:56
Julian
Hallo,
leider hat das nicht zu 100% funktioniert. Die Tabellen haben sich ca. "halb" aktualisiert, jedoch fehlen dort ein paar Einträge.
Hier ist das VBskript:
Dim objXL
Dim objWkb
Dim objWks
Set objXL = WScript.CreateObject("Excel.Application")
set objWkb = objXL.Workbooks.open("F:\DailySupport\Daily_Support_Report-Test25h.xlsm")
set objWks = objWkb.Worksheets("Zusammenfassung")
objWks.Activate
objXL.Run "Beispiel"
objWkb.Close True
objXL.Quit
set objXL = Nothing
Hier das VBA nochmal:
Option Explicit
Public Sub Beispiel()
Dim objWorkbook As Workbook
Dim objWorksheet As Worksheet
Dim objPivotTable As PivotTable
Dim PdfFileName As String
Dim Outlapp As Object, myMail As Object
Dim title As String, mailTo As String, mailCc As String
Dim mailBody As String, mailBcc As String
Dim counter As Long
Dim SheetstoMail As Variant
Set objWorkbook = Workbooks.Open(Filename:="F:\DailySupport\Daily_Support_Report-Test25h. _
xlsm")
For Each objWorksheet In objWorkbook.Worksheets
For Each objPivotTable In objWorksheet.PivotTables
Call objPivotTable.RefreshTable
Next
Next
title = "Daily Support Report " & Date$
counter = Range("PivotDaten!A1").Value
mailTo = "hueskes@itb-pim.de"
mailCc = "hueskes@itb-pim.de"
mailBcc = "hueskes@itb-pim.de"
mailBody = "Hallo Freunde"
PdfFileName = "Daily_Support_Report_" + Date$ + ".pdf"
SheetstoMail = Array("Zusammenfassung")
Call objWorkbook.RefreshAll
Sheets(SheetstoMail).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFileName, Quality:= _
xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False,  _
OpenAfterPublish:=False
Set Outlapp = CreateObject("Outlook.Application")
Set myMail = Outlapp.CreateItem(0)
With myMail
.To = "hueskes@itb-pim.de"
.Subject = title & " Offen: " & CStr(counter)
.Cc = "hueskes@itb-pim.de"
.Bcc = "hueskes@itb-pim.de"
.Body = "Hallo Freunde"
Call .Attachments.Add(PdfFileName)
Call .Send
Call Application.OnTime(TimeSerial(0, 1, 0), "PdfAndMail")
End With
Call objWorkbook.Close(SaveChanges:=True)
Set myMail = Nothing
Set Outlapp = Nothing
Set objWorkbook = Nothing
End Sub

Findet Ihr den Fehler von mir, bzw. Nepumuk?
Anzeige
PivotTabellen aktualisieren
04.02.2020 09:50:18
Nepumuk
Hallo Julian.
ich kenne mich mit Pivot nicht aus, daher kann ich nur raten.
Versuch es mal so:
    For Each objWorksheet In objWorkbook.Worksheets
For Each objPivotTable In objWorksheet.PivotTables
With objPivotTable
Call .RefreshTable
Call .RefreshDataSourceValues
Call .Update
End With
Next
Next

Gruß
Nepumuk
AW: PivotTabellen aktualisieren
04.02.2020 15:19:04
Julian
Hallo Nepumuk,
leider funktioniert dies auch nicht, da es folgenden Fehler ausgibt:
Laufzeitfehler'1004':
Anwendungs- oder objektdefinierter Fehler
PS: Sorry für die ganzen Fragen kenne mich zu wenig dafür damit aus.
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige