Informationen und Beispiele zum Thema InputBox | |
---|---|
![]() |
InputBox-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: zweite Mappe öffen und Makroende abwarten
von: Joni
Geschrieben am: 21.01.2010 22:47:09
Schönen Abend,
ich öffne von einer Mappe aus eine andere. Bei der 2. Mappe wird beim Öffnen ein Makro ausgeführt. Anschließend wird diese 2. Mappe wieder geschlossen. Das Makro der 1. Mappe sollte während die 2. offen ist aber Pause machen. Wie kann ich dies am einfachsten umsetzen?
Meine erste Idee ist, dass ich beim Öffnen der 2. Mappe einen Wert in eine Zelle schreibe. Dieser wird in einer Schleife abgefragt. Solange er da ist läuft die Schleife. Die 2. Makro entfernt diesen Wert als letzte Aktion vor dem Schließen. Dann wird die Schleife beendet und das Makro der ersten Mappe setzt fort.
Gibt es da bessere/einfachere Ansätze?
Gruß Joni
Betrifft: AW: zweite Mappe öffen und Makroende abwarten
von: Josef Ehrensberger
Geschrieben am: 21.01.2010 23:25:46
Hallo Joni,
solange das Makro in Mappe2 läuft, wird das Makro in Mappe1 sowieso nicht weiterlaufen.
VBA kennt kein Multitasking.
Betrifft: AW: zweite Mappe öffen und Makroende abwarten
von: Joni
Geschrieben am: 21.01.2010 23:51:05
Hallo Sepp,
danke für die Info, das habe ich gerade gemerkt (meine Rohfassung ist soweit fertig). Jetzt habe ich aber das Problem, dass das erst Makro nicht weiter läuft wenn die 2. Mappe geschlossen wird. Wie kann ich das Makro der ersten Mappe an der Stelle fortsetzen wo es unterbrochen wurde? Wenn das über einen Aufruf von der 2. Mappe aus als eigenes Makro gemacht wird, müsste ich alle Werte aus der Schleife zwischenspeichern, damit diese wieder an der gleichen Stelle fortgesetzt werden kann.
Vielleicht kennst du ja dafür eine Lösung.
Gruß Joni
Betrifft: AW: zweite Mappe öffen und Makroende abwarten
von: Josef Ehrensberger
Geschrieben am: 21.01.2010 23:55:10
Hallo Joni,
dazu müsste man deine Code sehen. Vorallem wie die 2. Mappe Aufgerufen wird
und was der Code in der 2. Mappe anstellt.
Betrifft: AW: zweite Mappe öffen und Makroende abwarten
von: Joni
Geschrieben am: 22.01.2010 15:48:28
Hallo Sepp,
hier die vereinfachte Version.
Mappe 1:
Sub workbook_open() Dim DATBZ1, DATEZ1, VBUNR, BBUNR As String 10 DATBZ1 = InputBox("Beginn Zeitraum (Format TT.MM.JJ)?", "Datum", Format(expression:=( _ DateSerial(Year(Date), 1, 1)), Format:="dd.mm.yy")) If Not DATBZ1 Like "##.##.##" Then GoTo 10 Sheets("Objekte").Cells(4, 5) = DATBZ1 20 DATEZ1 = InputBox("Ende Zeitraum (Format TT.MM.JJ)?", "Datum", Format(expression:=( _ DateSerial(Year(Date), 12, 31)), Format:="dd.mm.yy")) If Not DATEZ1 Like "##.##.##" Then GoTo 20 Sheets("Objekte").Cells(5, 5) = DATEZ1 28 VBUNR = "1" 'Beginn mit welcher Buchungsnummer? Sheets("Objekte").Cells(6, 5) = VBUNR 29 BBUNR = "10" 'Ende mit welcher Buchungnummer? Sheets("Objekte").Cells(7, 5) = BBUNR Sheets("Objekte").Cells(9, 5) = 4 'Beginnzeile mit den Objektnummern Call Kontoauszug_starten End Sub
Sub Kontoauszug_starten() Dim i As Variant Dim k As Variant Dim OBJ As Variant Dim PFAD As String 'Pfad wo die Dateien gespeichert sind Dim DATEI As String 'Dateiname der Kontoauszugsdatei PFAD = ThisWorkbook.Path DATEI = "Kontoauszug Personen Objekte.xls" i = Sheets("Objekte").Cells(9, 5) If Sheets("Objekte").Cells(i, 1) <> "" Then OBJ = Sheets("Objekte").Cells(i, 1) 'Objekt auslesen Sheets("Objekte").Cells(8, 5) = OBJ Workbooks.Open Filename:=PFAD & "\" & DATEI Else GoTo Ende End If Ende: End SubMappe 2:
Sub workbook_open() Application.Run ("'Kontoauszug Personen Objektliste.xls'" & "!Kontoauszug_schließen") 'Mappe 1 _ Marko aufrufen End SubMappe 1:
Sub Kontoauszug_schließen() Dim DATEI As String 'Dateiname der Kontoauszugsdatei Dim LISTE As String 'Dateiname der Abfrageliste DATEI = "Kontoauszug Personen Objekte.xls" 'Mappe 2 LISTE = "Kontoauszug Personen Objektliste.xls" 'Mappe 1 Workbooks(LISTE).Activate Workbooks(DATEI).Saved = True Workbooks(DATEI).Close 'bis hierher klappt alles MsgBox ("Test") End SubBis zur drittletzten Zeile funktioniert alles. Wenn dann die 2. Arbeitsmappe geschlossen wird, macht das Makro nicht mehr weiter. Wie kann ich dieses Problem löschen?
Betrifft: AW: zweite Mappe öffen und Makroende abwarten
von: Joni
Geschrieben am: 22.01.2010 16:02:50
Hallo Sepp,
hatte gerade meinen Geistesblitz. Ich rufe das Makro in der Mappe 2 aus der Mappe 1 auf statt mit der der workbook_open Variante. So bleibt meine Mappe 1 "Master". Wenn ich die Mappe 2 dann aus der Mappe 1 schließe läuft das Makro auch weiter (und meine Schleife ist auch einfacher umzusetzen).
For i = k To 65000 Step 1
If Sheets("Objekte").Cells(i, 1) <> "" Then
OBJ = Sheets("Objekte").Cells(i, 1) 'Objekt auslesen
Sheets("Objekte").Cells(8, 5) = OBJ
Workbooks.Open Filename:=PFAD & "\" & DATEI
Application.Run ("'Kontoauszug Personen Objekte.xls'" & "!starten")
Workbooks(LISTE).Activate
Workbooks(DATEI).Saved = True
Workbooks(DATEI).Close
Else
GoTo Ende
End If
Next
Hin und wieder dauerts etwas. Danke für deine Hilfe.
Gruß Joni