Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

zweite Mappe öffen und Makroende abwarten | Herbers Excel-Forum


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.


Gruß Sepp



  

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.


Gruß Sepp



  

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 Sub
Mappe 2:
Sub workbook_open()

Application.Run ("'Kontoauszug Personen Objektliste.xls'" & "!Kontoauszug_schließen") 'Mappe 1  _
Marko aufrufen

End Sub
Mappe 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 Sub
Bis 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?

Ich hoffe auf deine Hilfe.

Gruß Joni


  

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


Beiträge aus den Excel-Beispielen zum Thema "zweite Mappe öffen und Makroende abwarten"