Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1680to1684
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

VBA für einmalige Aktualisierung am Tag

VBA für einmalige Aktualisierung am Tag
26.03.2019 21:05:11
Alessio
Guten Abend,
ich bin mit VBA nur seit einer Woche beschäfigt und suche seit Tagen einen VBA-Code der
a) alle die SQL Tabellen aktualisiert (also RefreshAll)
b) den ganzen Arbeitsblatt berechnet (also Berechnung soll auf manuell sein)
c) die Pivottabellen aktualisiert
Wichtig ist aber, dass der Code nur einmal am Tag läuft, denn ich schaue die Ergebnisse in einem späteren Zeitpunkt.
Durch Windows Einstellungen hab ich erstmal die Uhrzeit zum Öffnen des Excel Files um 7:20 eingestellt.
Beim Öffnen soll der VBA-Code prüfen dass er an dem Tag nicht ausgeführt wurde und evtl. in der oben genannten Reihenfolge laufen.
Ich dachte ich könnte den Makrorekorder nutzen aber dann weiß ich nicht wie in den Code eingeben, dass zwischen a) und b) mind. 7-9 Min abwarten soll. Generell bräuchte ich aber eure Hilfe, besonders um zu vermeiden dass der Code beim Öffnen immer wieder läuft.
Ich bedanke mich im Voraus und hoffe auf eure Hilfe. :-)

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA für einmalige Aktualisierung am Tag
27.03.2019 10:04:54
Nepumuk
Hallo Alessio,
in das Modul "DieseArbeitsmappe":
Option Explicit
Private Sub Workbook_Open()
Call Start
End Sub

In ein Standardmodul (Menüleiste im VBA-Editor - Einfügen - Modul):
Option Explicit
Option Private Module
Public Sub Start()
Const RUN_DATE As String = "Gelaufen"
Dim objName As Name
Dim dtmRunDate As Date
For Each objName In ThisWorkbook.Names
If objName.Name = RUN_DATE Then Exit For
Next
If objName Is Nothing Then
Call ThisWorkbook.Names.Add(Name:=RUN_DATE, _
RefersTo:=Array(Date - 1), Visible:=False)
Else
Set objName = Nothing
End If
dtmRunDate = CDate(Evaluate(RUN_DATE)(1))
If dtmRunDate 

Gruß
Nepumuk
Anzeige
AW: VBA für einmalige Aktualisierung am Tag
27.03.2019 15:50:09
Alessio
Hi Nepumuk,
erstmal vielen Dank für deine Hilfe. Ich habe es so eingestellt, wie du beschrieben hast, dann gespeichert, geschlossen und wieder geöffnet.
VBA wurde beim Öffnen automatisch ausgeführt.
SQL Abfragen wurden aktualisiert.
Berechnung hat aber nicht funktioniert.
Einige Pivottabellen wurden nicht aktualisiert.
EDIT: vielleicht habe ich die 9 Minuten nicht abgewartet und früher getestest...werde morgen testen und nochmal das Ergebnis hier schreiben. :)
AW: VBA für einmalige Aktualisierung am Tag
28.03.2019 09:59:25
Alessio
Guten Morgen Nepumuk,
a) erfolgreich ausgeführt
b) nach der 9 Min Wartezeit fängt die Berechnung an. Die Daten werden in der Tabelle aktualisiert aber jetzt liest Excel die Daten weiterhin (immer wieder 'Daten werden abgerufen' und 'Daten werden gelesen' seit 10 Min jetzt).
Ich habe die Berechnung abgebrochen und den Laufzeitfehler '1004' bekommen.
'Excel konnte die Tabelle xxx nicht über die Verbindung "SqlServerxxx" aktualisieren. Fehlermeldung der externen Datenquelle: The operation failed because the source database does not exist, the source table does not exist, or because you do not have access to the data source."
Alle drei Optionen nicht möglich. Ich nehme an, ich lese das weil der Vorgang von mir abgebrochen wurde.
c) hab wegen b) nicht getestet.
Anzeige
AW: VBA für einmalige Aktualisierung am Tag
28.03.2019 10:07:06
Nepumuk
Hallo Alessio,
da kann ich dir nicht weiterhelfe da ich weder deine Mappe noch einen SQL-Server zur Verfügung habe.
SORRY !!!
Gruß
Nepumuk
AW: VBA für einmalige Aktualisierung am Tag
28.03.2019 10:17:55
Alessio
Hi Nepumuk,
ja kein Problem. Ich versuche den Fehler zu finden damit dein Makro bis zum Ende läuft und melde mich wieder. :-)
Hab einen schönen Tag.
LG,
Alessio
AW: VBA für einmalige Aktualisierung am Tag
28.03.2019 16:14:56
Hajo_Zi
Hallo Alessio,
offen bedeutet es soll noch eine Antwort kommen.
Warum ist dein Beitrag Offen.
Du willst doch was machen. Soll jemand vorbei kommen?

AW: VBA für einmalige Aktualisierung am Tag
28.03.2019 16:19:50
Alessio
Hi Hajo_Zi,
ah! Witzig.
Ja, ich arbeite heute noch an diesem Fehler und morgen lasse ich den Nepumuks Makro laufen. Wenn es klappt, wie schon in meiner letzten Nachricht geschrieben, markiere ich den Beitrag als erledigt. Ist das ein Problem wenn der Beitrag für die nächste 24 St so bleibt oder gibt's einen Service Level zu erreichen?
LG,
Alessio
Anzeige
AW: VBA für einmalige Aktualisierung am Tag
29.03.2019 09:55:14
Alessio
Hi Nepumuk,
Fehler wurde behoben aber Makro hängt immer noch. Vielleicht versuche ich erstmal mit dem Skript ohne die Berechnung (würde manuell machen). Kannst du mir sagen ob es so passt, wenn ich nur die RefreshAll Teil drin lassen möchte?
Option Explicit
Option Private Module

Public Sub Start()
Const RUN_DATE As String = "Gelaufen"
Dim objName As Name
Dim dtmRunDate As Date
For Each objName In ThisWorkbook.Names
If objName.Name = RUN_DATE Then Exit For
Next
If objName Is Nothing Then
Call ThisWorkbook.Names.Add(Name:=RUN_DATE, _
RefersTo:=Array(Date - 1), Visible:=False)
Else
Set objName = Nothing
End If
dtmRunDate = CDate(Evaluate(RUN_DATE)(1))
If dtmRunDate 

Anzeige
AW: VBA für einmalige Aktualisierung am Tag
29.03.2019 10:01:38
Nepumuk
Hallo Alessio,
nach der Zeile:
Call ThisWorkbook.RefreshAll

fehlen noch diese Zeilen:
ThisWorkbook.Names(RUN_DATE).RefersTo = Array(Date)
Call ThisWorkbook.Save

Damit wird das Datum des aktuellen Tages gespeichert, ansonsten würde das Makro bei jedem öffnen laufen.
Gruß
Nepumuk
AW: VBA für einmalige Aktualisierung am Tag
29.03.2019 10:18:38
Alessio
Hi Nepumuk,
vielen lieben Dank!
Wenn du irgendwann mal in Berlin bist, hast du ein paar Bierchen versprochen. :-)
LG,
Alessio
AW: VBA für einmalige Aktualisierung am Tag
27.03.2019 10:52:32
fcs
Hallo Alessio,
die Neuberechnung und die Aktualisierung der Pivotberichte muss man mit einem 2. Makro durchführen, dass per OnTime-Methode zeitverzögert gestartet wird.
Was ich nicht 100% weiss: Wird das Ereignis-Makro "Workbook_Open" auch gestartet, wenn die Datei via Windows-Einstellunen zu einer bestimmten Uhrzeit geöffnet wird.
Gruß
Franz
'Code unter "DieseArbeitsmappe" der Datei
Private Sub Workbook_Open()
Call prcUpdateDatei
End Sub

'Code in einem allgemeinen Modul der Datei
Sub prcUpdateDatei()
' prcUpdateDatei Makro
' Aktualisieren der SQL-Abfragen,neu Berechnen der Arbeitsmappe, und Aktualisieren _
der Pivot-Berichte
Dim sDate As String
'letztes Aktualisierungsdatum aus Dokumenteigenschaft "Kommentar" einlesen.
sDate = ThisWorkbook.BuiltinDocumentProperties("Comments")
If IsDate(sDate) Then
If CDate(sDate) = Date Then
MsgBox "Abfragen der Datei wurden heute schon aktualisiert", vbOKOnly, _
"Makro: prcUpdateDatei" 'nur zum Testen
Exit Sub
End If
End If
Application.Calculation = xlManual
ThisWorkbook.RefreshAll
'in 9 Minuten Mappe neu berechnen und Pivotberichte aktualiseren
Application.OnTime Earliesttime:=Now + TimeSerial(Hour:=0, Minute:=9, Second:=0), _
Procedure:="prcCalculate_and_Pivot_Refresh"
End Sub
Sub prcCalculate_and_Pivot_Refresh()
Dim wks As Worksheet
Dim pvTab As PivotTable
MsgBox "Jetzt wird neu berechnet und Pivot-Berichte aktualisiert", vbOKOnly, _
"Makro: prcCalculate_and_Pivot_Refresh" 'nur zum Testen
Application.Calculate
For Each wks In ThisWorkbook.Worksheets
For Each pvTab In wks.PivotTables
pvTab.RefreshTable
Next
Next
'Aktualisierungsdatum in Dokumenteigenschaft "Kommentar" speichern.
ThisWorkbook.BuiltinDocumentProperties("Comments") = Format(Date, "YYYY-MM-DD")
End Sub

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige