Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
824to828
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
824to828
824to828
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro, um zur nächsten offenen Datei zu springen

Makro, um zur nächsten offenen Datei zu springen
07.12.2006 19:40:15
Andreas
Hallo lieber Herber.de Fans,
ich habe ein Makro Problem. Seit kurzem erst arbeite ich mit noch relativ einfachen Makros. Heute wollte ich folgendes versuchen:
Es sind beliebig viele Dateien geöffnet, einige haben ein Blatt "Grafik", andere nicht. Dieses Blatt soll in allen Dateien gelöscht werden.
Das Makro soll prüfen, ob ein Blatt "Grafik" vorhanden ist, Wenn ja -> löschen, wenn nein -> weiter zur nächsten Datei.
Mein Ansatz sieht wie folgt aus:

Sub Blatt_Grafik_loeschen2()
Dim mappe
For Each mappe In Workbooks
Application.DisplayAlerts = False
Worksheets("Grafik").Delete
Application.DisplayAlerts = True
Next
End Sub

Das funktioniert nur bedingt. Es fehlt die IF Prüfung und mir fehlt eine Kommandozeile, die sagt: "Springe zur nächsten offenen Datei" (ohne speichern, ohne schließen)
Hat jemand einen Ansatz für mich?
Vielen Dank im Voraus.
Grüße aus Berlin, Andreas
PS: In diesem Zusammenhang noch folgende Frage: Ein Blatt in eine andere Datei zu verschieben/ kopieren ist möglich, aber auch das dort vorhandene gleichlautende zu ersetzten? Das neu eingefügte bekommt standardmäßig ja immer eine (2) angestellt. Danke

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Du musst die Mappe auch referenzieren
07.12.2006 19:47:16
NoNet
Hallo Andreas,
vom Prinzip ist Dein Code fast richtig : Nur solltest Du die Mappe auch als Objekt vor dem Worksheet mit angeben. Um Fehler zu ignorieren (z.B. falls das Blatt "Grafik" in einer Mappe nicht existiert), habe ich noch den "On Error..." Befehl eingebaut :


Sub Blatt_Grafik_loeschen2()
    Dim mappe
    On Error Resume Next
    For Each mappe In Workbooks
        Application.DisplayAlerts = False
        mappe.Worksheets("Grafik").Delete
        Application.DisplayAlerts = True
    Next
End Sub
Liebe Grüße,
NoNet
Anzeige
AW: Makro, um zur nächsten offenen Datei zu spring
07.12.2006 19:48:43
Erich
Hallo Andreas,
etwa so:
Option Explicit
Sub Blatt_Grafik_loeschen2()
Dim mappe As Workbook, ws As Worksheet
For Each mappe In Workbooks
For Each ws In mappe.Worksheets
If ws.Name = "Grafik" Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
Next ws
Next mappe
End Sub
Das Ersetzen eines Blatts geht nur mit vorherigem Löschen in der Zielmappe.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: neue Version
07.12.2006 19:51:58
Erich
Hallo Andreas,
da fehlte noch ein "Exit For" - geht dann schneller:
Option Explicit
Sub Blatt_Grafik_loeschen2()
Dim mappe As Workbook, ws As Worksheet
For Each mappe In Workbooks
For Each ws In mappe.Worksheets
If ws.Name = "Grafik" Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
Exit For
End If
Next ws
Next mappe
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: neue Version
07.12.2006 19:59:38
Reinhard
Hallo Erich,
nochn Tick schneller:-):
Option Explicit
Sub Blatt_Grafik_loeschen2()
Dim mappe As Workbook, ws As Worksheet
On Error GoTo FEHLER
Application.DisplayAlerts = False
For Each mappe In Workbooks
For Each ws In mappe.Worksheets
If ws.Name = "Grafik" Then
ws.Delete
Exit For
End If
Next ws
Next mappe
Application.DisplayAlerts = True
Exit Sub
FEHLER:
Application.DisplayAlerts = True
MsgBox "Fehler, möglicherweise Mappenschutz, serverberechtigung, MS, ..."
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: neue Version
07.12.2006 20:04:23
Erich
Hi Reinhard,
ist die gewonnene Zeit wirklich länger als die Zeit zum Schreiben der zusätzlichen Zeilen
und ein evtl. längeres späteres Lesen/Verstehen des Codes?
Grüße von Erich aus Kamp-Lintfort
AW: neue Version
07.12.2006 23:34:30
Reinhard
Hallo Erich,
das verstehe ich nun nicht, du setzt in der For-Schleife DisplayAlerts jedesmal neu auf True oder False, Dies vor der Schleife bzw danach zu machen muss doch Zeit sparen und macht nix unübersichtlicher!?
Das war meine Hauptänderung, die Fehlerreaktion spielt da weniger ne Rolle.
Gruß
Reinhard
AW: neue Version - Dank an Alle
08.12.2006 15:23:56
Andreas
Vielen Dank an Euch alle!
Ich habe mir die Codes in den Editor kopiert. Sie funktionieren. Um zu verstehen, warum, wieso, weshalb, werde ich sie jetzt noch mit F1 Hilfe und für mich selber "sezieren". Ich will ja dabei was lernen und nicht nur kopieren.
Euch allen einen schönen 2. Advent.
Gruß aus Berlin, Andreas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige