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

Makro Schleife bei zwei geöffneten Dateien

Makro Schleife bei zwei geöffneten Dateien
27.02.2024 14:12:26
Uwe1267
Hallo zusammen,

wer kann mir bei meinem Problem weiterhelfen da ich kein Profi bin.

Ich habe eine Datei welche ein Spielplan mit Gruppenphasen und KO Runde hat. Beim ausführen des Start Makros, übertrage ich drei Tabellenblätter aus dieser Datei in eine andere Datei die LivetickerAusgabeMonitor heißt und öffne diese gleichzeitig. Mit dieser Datei kann ich auf einen anderen Monitor darstellen und zeige z.B. eine Gruppenphase aus der anderen Datei Spielplan an. Bei der Datei Monitor starte ich automatisch beim öffnen der Datei ein Makro welches bei einer bestimmten Bedigung (in einer Zelle steht nach beendigung Gruppenphase eine 1) eine Schleife in der Datei Monitor auslöst und dann zwischen den anderen zwei Tabellenblättern (LivetickerAusgabe und 32 KO Phase) wechselt. Dies habe ich soweit hinbekommen und funktioniert eigentlich ganz gut wenn ich die Datei Monitor im Vordergrund offen habe. Ein Fehler kommt mir wenn ich die Datei Spielplan im Vordergrund habe will anscheinend (da die Makros alle aufgerufen werden) die Schleife mit dem Namen Tabellenblattwechsel in der Datei ansprechen und findet den Befehl vom Aufruf ja hier nicht da dies ja in der Datei Monitor ist. Ich habe bereits einiges probiert und habe hierzu leider keine Lösung. Wer kann mir da bitte helfen?

Makros:

Sub StartGame()
'
' StartGame Makro
'

'


Dim TN_OK As String
Sheets("Meldungen").Select
TN_OK = Range("AT4").Value

If TN_OK = 1 Then


Static Zaehler As Integer
Zaehler = Zaehler + 1: If Zaehler > 1 Then Exit Sub


Range("K30").Select
Selection.Copy
Range("K30").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("B3:B66").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("C3").Select
Dim BoOffen As Boolean
Dim WoDatei As Workbook
Dim Pfad As String
Dim Pfadneu As String
Dim Speichername As String
Dim SpeichernameohneEndung As String
Dim DateiName As String
Dim Suchbegriff As String
Dim Pfadaktuell As String
Dim Datei As String
Dim Sicherungsdatei As String
Dim Livetickername As String
Dim KoPhase
Dim AnzahlGruppen

Suchbegriff = Turnier
Pfad = ThisWorkbook.Path
Range("M311").Value = Pfad
Range("M312").Value = Suchbegriff
Pfadneu = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\"))
Speichername = Format(Now, "yyyymmdd") & " " & "Turnier" & ".xlsm"
SpeichernameohneEndung = Format(Now, "yyyymmdd")
ActiveWorkbook.SaveAs Pfadneu & Speichername
ThisWorkbook.Sheets("Meldungen").Range("M314").Value = Date
Range("M315").Value = Speichername
Range("M316").Value = SpeichernameohneEndung

Sheets("Gruppenspiele Übersicht").Select
ActiveSheet.Unprotect
KoPhase = Range("AC1").Value
AnzahlGruppen = Range("AA1").Value


ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

Sheets("Meldungen").Select
Livetickername = "LivetickerAusgabeMonitor_Auto_Wechsel" & ".xlsm"
Pfad = Range("M311").Value
Sicherungsdatei = Range("M315").Value
DateiName = Range("M312").Value
Datei = Pfad & "\" & Livetickername
Range("M313").Value = Datei

Worksheets("Zwischenergebnisse").Visible = False
Worksheets("Gruppenaufteilungen").Visible = False
Worksheets("Single-KO").Visible = False

If AnzahlGruppen 13 Then
Worksheets("Gruppen M+N+O+P").Visible = False
End If

If AnzahlGruppen 9 Then
Worksheets("Gruppen I+J+K+L").Visible = False
End If

If AnzahlGruppen 5 Then
Worksheets("Gruppen E+F+G+H").Visible = False
End If


For Each WoDatei In Workbooks
If WoDatei.Name = (Livetickername) Then



If KoPhase >= 12 Then
Windows(Sicherungsdatei).Activate
Sheets("32er Grafik").Select
Sheets("32er Grafik").Copy After:=Workbooks( _
"LivetickerAusgabeMonitor.xlsm").Sheets(1)
End If

Windows(Sicherungsdatei).Activate
Sheets("Liveticker Ergebnis").Select
Sheets("Liveticker Ergebnis").Copy After:=Workbooks( _
"LivetickerAusgabeMonitor_Auto_Wechsel.xlsm").Sheets(1)


Windows(Sicherungsdatei).Activate
Sheets("Gruppenspiele Übersicht").Select
Sheets("Gruppenspiele Übersicht").Copy After:=Workbooks( _
"LivetickerAusgabeMonitor_Auto_Wechsel.xlsm").Sheets(1)
Windows(Sicherungsdatei).Activate

Windows("LivetickerAusgabeMonitor_Auto_Wechsel.xlsm").Activate
Sheets("Gruppenspiele Übersicht").Select

Application.DisplayAlerts = False
Worksheets("Tabelle1").Delete
Application.DisplayAlerts = True

'Windows(Livetickername).Activate
'Sheets("Gruppenspiele Übersicht").Select


Windows(Sicherungsdatei).Activate

BoOffen = True
Exit For
End If
Next
If BoOffen = False Then


Workbooks.Open Filename:=Datei


If KoPhase >= 12 Then
Windows(Sicherungsdatei).Activate
Sheets("32er Grafik").Select
Sheets("32er Grafik").Copy After:=Workbooks( _
"LivetickerAusgabeMonitor_Auto_Wechsel.xlsm").Sheets(1)
End If


Windows(Sicherungsdatei).Activate
Sheets("Liveticker Ergebnis").Select
Sheets("Liveticker Ergebnis").Copy After:=Workbooks( _
"LivetickerAusgabeMonitor_Auto_Wechsel.xlsm").Sheets(1)


Windows(Sicherungsdatei).Activate
Sheets("Gruppenspiele Übersicht").Select
Sheets("Gruppenspiele Übersicht").Copy After:=Workbooks( _
"LivetickerAusgabeMonitor_Auto_Wechsel.xlsm").Sheets(1)
Windows(Sicherungsdatei).Activate

Windows("LivetickerAusgabeMonitor_Auto_Wechsel.xlsm").Activate
Sheets("Gruppenspiele Übersicht").Select

Application.DisplayAlerts = False
Worksheets("Tabelle1").Delete
Application.DisplayAlerts = True


'Windows(Livetickername).Activate
'Sheets("Gruppenspiele Übersicht").Select


Windows(Sicherungsdatei).Activate




End If

Else

Dim TN_Anzahl As String
Sheets("Meldungen").Select
TN_Anzahl = Range("AT2").Value

If TN_Anzahl 12 Then
MsgBox "Mindestteilnehmer 12"
End If

If TN_Anzahl > 64 Then
MsgBox "max. Teilnehmer 64"
End If

End If

Makro2:

Sub TabellenblattWechseln()

Dim SartWechsel As Integer
Dim Blattname As String
Dim Dateiname As String
Dim Pfad As String
Dim Dateiname_mit_Pfad As String
Dim Zeit As String
Dim Bezug As String
Dim Tabellenblatt As String


Static Zaehler_Wechsel As Integer
If Zaehler_Wechsel 1 Then
Zeit = "00:00:05"

Zaehler_Wechsel = Zaehler_Wechsel + 1: If Zaehler_Wechsel 2 Then GoTo Sprung
End If

Blattname = ActiveWorkbook.ActiveSheet.Name

If Blattname = "Liveticker Ergebnis" Then
Zeit = "00:01:00"
End If

If Blattname = "32er Grafik" Then
Zeit = "00:00:20"
End If

StartWechsel = Workbooks("LivetickerAusgabeMonitor_Auto_Wechsel.xlsm").Worksheets("Gruppenspiele Übersicht").Cells(2, 57).Value

If Blattname = "Gruppenspiele Übersicht" Then
Zeit = "00:0:01"
End If


If StartWechsel = 1 Then

Dim INDEX As Long

INDEX = ActiveSheet.INDEX


If INDEX = Worksheets.Count Then INDEX = 1


Worksheets(INDEX + 1).Activate


Application.OnTime Now() + TimeValue(Zeit), "TabellenblattWechseln"


Else

Sprung:


Application.OnTime Now() + TimeValue("00:00:10"), "TabellenblattWechseln"

End If

End Sub

Danke schon mal in vorraus

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Schleife bei zwei geöffneten Dateien
27.02.2024 14:19:35
daniel
Hi
überarbeite deine Code und eleminere die Selects, in dem du vollständig referenzierst.

das bedeutet, dass man beispielsweise eine Zelle immer über die Kette: Workbook("Dateiname").Sheets("Tabellenblattname").Range("Zelladresse") anspricht und dann den Befehl direkt anhängt.

wenn man das konsequent macht, braucht man keine Selects, Selection, Activate und ActiveSheet, ActiveWorkbook nicht mehr und dann funktioniert der Code unabhängig davon, welches Tabellenblatt gerade aktiv ist.

weitere Infos dazu findest du hier
https://online-excel.de/excel/grusel_vba.php?f=6
insbesondere in den beiden Kapiteln zum Thema Makrorecorder.
Gruß Daniel
Anzeige
cp vba forum
27.02.2024 19:08:40
ralf_b
und dort hast du nicht mal den Code gepostet.
AW: Makro Schleife bei zwei geöffneten Dateien
29.02.2024 09:58:58
Uwe1267
Hi, ich verstehe es leider nicht, habe was umgeschrieben und kommt immer noch Fehler. Kann mir jemand sagen wo und was ich umschreiben muss?

Danke schon mal

Sub TabellenblattWechseln()

Dim SartWechsel As Integer
Dim Blattname As String
Dim Dateiname As String
Dim Pfad As String
Dim Dateiname_mit_Pfad As String
Dim Zeit As String
Dim Bezug As String
Dim Tabellenblatt As String


Static Zaehler_Wechsel As Integer
If Zaehler_Wechsel 1 Then
Zeit = "00:00:05"

    Zaehler_Wechsel = Zaehler_Wechsel + 1: If Zaehler_Wechsel 2 Then GoTo Sprung
End If

'Blattname = ActiveWorkbook.ActiveSheet.Name

If Blattname = "Liveticker Ergebnis" Then
Zeit = "00:01:00"
End If

If Blattname = "32er Grafik" Then
Zeit = "00:00:20"
End If

StartWechsel = Workbooks("LivetickerAusgabeMonitor_Auto_Wechsel.xlsm").Worksheets("Gruppenspiele Übersicht").Cells(2, 57).Value

If Blattname = "Gruppenspiele Übersicht" Then
Zeit = "00:00:05"
End If

    
If StartWechsel = 1 Then

Dim INDEX As Long

INDEX = ActiveSheet.INDEX


If INDEX = Worksheets.Count Then INDEX = 1


Worksheets(INDEX + 1).Activate

If Blattname = "Gruppenspiele Übersicht" Then
Blattname = "Liveticker Ergebnis"
MsgBox Blattname
End If

If Blattname = "Liveticker Ergebnis" Then
Blattname = "32er Grafik"
MsgBox Blattname
End If

If Blattname = "32er Grafik" Then
Blattname = "Liveticker Ergebnis"
MsgBox Blattname
End If

Application.OnTime Now() + TimeValue(Zeit), "TabellenblattWechseln" hier kommt der Fehler


Else

Sprung:

Blattname = "Gruppenspiele Übersicht"
MsgBox Blattname
Application.OnTime Now() + TimeValue("00:00:10"), "TabellenblattWechseln"

End If

End Sub
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige