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

Zeitproblem innerhaln VBA

Zeitproblem innerhaln VBA
15.06.2009 11:27:42
AyKay
Hallo liebe Forumgemeinde,
ich habe nachstehenden VBA-Code. Hierbei wird eine bestimmte Datei geöffnet und mehrere Programme nacheinander ausgeführt. Mit ....
... Application.Run (Datei & "!Import_Abfragewerte") werden alle Abfragen in den Tabellenblättern aktualisiert (bis ca. 60 Stück)
... Application.Run ("Basisdaten_Aufwand.xls!uebertrag") wird eine Datenübertrag angestossen,
Problem ist nun, dass der erste Programmaufruf zeitlich etwas länger braucht jedoch aber der zweite Programmaufruf bereits während dessen startet. Konkret heißt dies, dass noch während der Aktualisierung der Übertrag stattfindet, was natürlich zu Konflikten führt.
Ich habe bereits versucht eine "Wait-Anweisung" zu berücksichtigen, leider jedoch ohne Erfolg. Auch eine Aufsplittung auf zwei separate Prozeduren die dann nacheinander aufgerufen werden brachte keinen Erfolg.
Vielen dank schon einmal im voraus für eure Hilfe.
Grüße,
AyKay
Const pwd_wrkbk = "zwackelmann"
Const pwd_sheets = "2g3h08"

Sub Aktualisierung_MWP_Tools_Click()
Dim wks As Worksheet
Dim Pfad, Datei As String
Pfad = "O:\MWP_Aktuell\05-Gesamt\"
'+++++++++++  Basisdaten_Aufwand Aktualisieren ++++++++++++++++++++
Datei = "Basisdaten_Aufwand.xls"
Application.EnableEvents = False
Workbooks.Open (Pfad & Datei)
ActiveWorkbook.Unprotect (pwd_wrkbk)
Application.EnableEvents = True
For Each wks In ActiveWorkbook.Worksheets
wks.Visible = True
Next
Application.Run (Datei & "!Import_Abfragewerte")
Application.Wait (Now + TimeValue("00:00:05"))
Application.Run ("Basisdaten_Aufwand.xls!uebertrag")
Application.Wait (Now + TimeValue("00:00:10"))
On Error Resume Next
ActiveWorkbook.Worksheets("Leer").Visible = True
For Each wks In ActiveWorkbook.Worksheets
If wks.Name = "leer" Then
wks.Visible = True
Else
wks.Visible = xlSheetHidden
End If
Next
'Workbooks(Datei).Protect (pwd_wrkbk)
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True
Workbooks(Datei).Close False
'+++++++++++  Basisdaten_Aufwand Aktualisieren ++++++++++++++++++++
End Sub


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeitproblem innerhaln VBA
15.06.2009 13:25:21
PointOfView
Hallo AyKay,
probier doch mal, die Aktualisierungen als einzelne Sub-Prozeduren anzustossen.

Sub Aktualisierung_MWP_Tools_Click()
Dim wks As Worksheet
Dim Pfad, Datei As String
Pfad = "O:\MWP_Aktuell\05-Gesamt\"
'+++++++++++  Basisdaten_Aufwand Aktualisieren ++++++++++++++++++++
Datei = "Basisdaten_Aufwand.xls"
Application.EnableEvents = False
Workbooks.Open (Pfad & Datei)
ActiveWorkbook.Unprotect (pwd_wrkbk)
Application.EnableEvents = True
For Each wks In ActiveWorkbook.Worksheets
wks.Visible = True
Next
Call Import_Abfragewerte
Call Basisdaten_Aufwand
On Error Resume Next
ActiveWorkbook.Worksheets("Leer").Visible = True
For Each wks In ActiveWorkbook.Worksheets
If wks.Name = "leer" Then
wks.Visible = True
Else
wks.Visible = xlSheetHidden
End If
Next
'Workbooks(Datei).Protect (pwd_wrkbk)
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True
Workbooks(Datei).Close False
'+++++++++++  Basisdaten_Aufwand Aktualisieren ++++++++++++++++++++
End Sub



Sub Import_Abfragewerte()
Application.Run (Datei & "!Import_Abfragewerte")
End Sub



Sub Basisdaten_Aufwand()
Application.Run ("Basisdaten_Aufwand.xls!uebertrag")
End Sub


So zum Beispiel (ungetestet!!)
Gruss
PointOfView (Oliver)

Anzeige
AW: Zeitproblem innerhaln VBA
15.06.2009 13:25:24
fcs
Hallo AyKay,
eine Methode Aktionen zeitversetzt zu starten ist, die Aktionen auf mehrere Prozeduren zu verteilen und dann mit der OnTime-Methode diese Prozeduren zeitlich gestaffelt zu starten.
Schaut dann etwa wie folgt aus.
Gruß
Franz

'+++++++++++  Basisdaten_Aufwand Aktualisieren ++++++++++++++++++++
Public Const Pfad As String = "O:\MWP_Aktuell\05-Gesamt\"
Public Const Datei As String = "Basisdaten_Aufwand.xls"
Const pwd_wrkbk = "zwackelmann"
Const pwd_sheets = "2g3h08"
Sub Aktualisierung_MWP_Tools_Click()
Dim wks As Worksheet
Dim datTime As Date
datTime = Now
'Prozeduren Teil 1
Application.EnableEvents = False
Workbooks.Open (Pfad & Datei)
ActiveWorkbook.Unprotect (pwd_wrkbk)
Application.EnableEvents = True
For Each wks In ActiveWorkbook.Worksheets
wks.Visible = True
Next
'Zeitgestaffelt weitere Aktionen starten
Application.OnTime earliesttime:=datTime + TimeSerial(0, 0, 10), _
Procedure:="ProcNr2"
Application.OnTime earliesttime:=datTime + TimeSerial(0, 0, 20), _
Procedure:="ProcNr3"
End Sub
Sub ProcNr2()
'Prozeduren Teil 2
Application.EnableEvents = False
Application.Run ("Basisdaten_Aufwand.xls!uebertrag")
Application.EnableEvents = True
End Sub
Sub ProcNr3()
'Prozeduren Teil 3
Dim wks As Worksheet
On Error Resume Next
ActiveWorkbook.Worksheets("Leer").Visible = True
For Each wks In ActiveWorkbook.Worksheets
If wks.Name = "leer" Then
wks.Visible = True
Else
wks.Visible = xlSheetHidden
End If
Next
'Workbooks(Datei).Protect (pwd_wrkbk)
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True
Workbooks(Datei).Close False
End Sub
'+++++++++++  Basisdaten_Aufwand Aktualisieren ++++++++++++++++++++


Anzeige
AW: Zeitproblem innerhaln VBA
15.06.2009 14:11:18
AyKay
Hallo Franz,
Excel schimpft mit mir, dass er das Makro "...ProcNr2" nicht finfen kann. Woran kann das liegen.
Grüße,
AyKay
AW: Zeitproblem innerhaln VBA
15.06.2009 14:37:22
AyKay
Hallo nochmal,
sorry - ich muss ja die beiden Prozeduren in ein Modul integrieren!!
Damit erkennt er zumindest schon einmal die beiden Proceduren. Testen kann ich das ganze leider erst heute abend, wenn alle User aus den dateien draußen sind. ich gebe morgen Rückmeldung ob es geklappt hat.
Trotzdem schon mal Danke,
AyKay
AW: Zeitproblem innerhaln VBA
15.06.2009 16:17:11
D.Saster
Hallo,

jedoch aber der zweite Programmaufruf bereits während dessen startet. 


das glaube ich nicht.
VBA kann kein Multitasking. Der parallele Ablauf 2er Makros ist nicht möglich.
Gruß
Dierk

Anzeige
AW: Zeitproblem innerhaln VBA
15.06.2009 16:24:20
AyKay
Hallo D.saster,
mein Problem ist aber genau das !!!! Während die Aktualisierung der Abfragen noch läuft (dauert recht lange!!) fängt er bereits mit dem nächsten Task an (z.B. Tabellenblätter ausblenden). Das kollidiert natürlich.
Ich benötige nun (wie von Franz umgestetzt) eine Zeitsteuerung um die versch. Programmteile "geregelt" ablaufen zu lassen.
Ich werde morgen berichten ob es gefunzt hat.
Grüße,
AyKay

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige