Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1788to1792
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

Löschen von Reitern

Löschen von Reitern
27.10.2020 12:56:23
Reitern
Ausgangslage:
Gegeben ist eine Arbeitsdatei, die verschiedene sichtbare und nicht sichtbare Reiter „xlVeryHidden" sowie Makros enthält. Nach Drücken eines Befehlsknopfes in dieser Arbeitsdatei wird eine Prozedur aufgerufen und ein weiterer Reiter erzeugt, Eintragungen durchgeführt und der neue Reiter formatiert. Anschließend wird unter einem neuen Namen eine Kopie abgespeichert, die Makros enthält. Sodann erfolgt in der Kopie die Sichtbarmachung aller Reiter und eine zweite Schleife führt das Löschen aller Reiter bis auf den einen neuen durch. Dann wird diese Datei unter gleichem Namen, jedoch ohne Makros gespeichert. Abschließend wird die Kopie mit Makros gelöscht „Kill…“ und aus der Arbeitsdatei der neu erstellte Reiter herausgelöscht und die Arbeitsdatei abgespeichert. Das ist der Inhalt des mitgesendeten Codes.
Was mich nun in den Wahnsinn treibt ist, dass der Code auf dem Rechner sauber durchläuft, auf dem er erstellt wurde. Auf weiteren drei Rechnern aber nicht. Die Anweisungen werden bis zum Sichtbarmachen aller Reiter ausgeführt und dann bricht die Veranstaltung ab und man erhält zwei offene Dateien, die unfertig sind. Mit „Application.DisplayAlerts = False/True“ habe ich schon herumgespielt. Funktioniert auf dem Programmierrechner an verschiedenen Stellen im Code, auf den anderen Rechnern führt es immer zum Abbruch der Ausführung. Ohne „Application.DisplayAlerts = False/True“ läuft der Code auf den anderen Rechnern durch, ruft aber bei jedem Schleifendurchlauf der Löschung ein Meldungsfenster auf, das ich unterdrücken will, denn die Löschung der Reiter ist ja explizit beabsichtigt. Systembasis ist Windows 10 mit Office 365 auf allen Rechnern. Die Rechner sind altersmäßig und vom Typ her unterschiedlich.
So: Was läuft hier falsch? Kann ich die Meldungen auf andere Weise unterdrücken (Errorhandler oder, oder) und den Programmdurchlauf erzwingen? Beschimpfungen nehme stoisch entgegen, sofern auch eine Lösung mit dabei ist. Vielen Dank schon mal an dieser Stelle, dass Ihr Euch durch den Text gearbeitet habt. PS: Eine Lösung wäre große Klasse, ich würde aber auch gern verstehen, warum es so nicht geht.
Ausschnitt:
'## Speichern der neuen Datei im Excel-Format:
'##
' Nachfolgende Zeile liest den aktuellen Dateinamen aus und übergibt diesen an eine Variable:
Dim strProjektdateiname As String
strProjektdateiname = ActiveWorkbook.Name
' Übergabe des Dateinamens an die Arbeitsdateikopie:
ActiveWorkbook.SaveCopyAs "C:\Users\Public\Downloads\" & strDateinamemitMakro
' Öffnen der Dateikopie:
Workbooks.Open "C:\Users\Public\Downloads\" & strDateinamemitMakro
' Sichtbarmachen aller Reiter:
Dim xWs As Worksheet
For Each xWs In Application.ActiveWorkbook.Worksheets
If xWs.Visible = xlVeryHidden Then
xWs.Visible = True
End If
Next
' Löschen der Tabellenreiter außer AP:
For Each xWs In Application.ActiveWorkbook.Worksheets
If xWs.Name "AP" Then
Application.DisplayAlerts = False
xWs.Delete
Application.DisplayAlerts = True
End If
Next
' Speichern und schließen der geänderten Kopie nunmehr ohne Makros:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=("C:\Users\Public\Downloads\" & strDateinameohneMakro), FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
ActiveWorkbook.Close
' Löschen der zuvor erzeugten Arbeitskopie mit Makros:
Kill "C:\Users\Public\Downloads\" & strDateinamemitMakro
' Öffnen der Projektdatei, löschen des Reiters AP und speichern ohne zu schließen:
Workbooks.Open "C:\Users\Public\Downloads\" & strProjektdateiname
Application.DisplayAlerts = False
Worksheets("AP").Delete
Application.DisplayAlerts = True
ActiveWorkbook.Save

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löschen von Reitern
27.10.2020 13:13:38
Reitern
Hallo,
hier
' Sichtbarmachen aller Reiter:
Dim xWs As Worksheet
For Each xWs In Application.ActiveWorkbook.Worksheets
If xWs.Visible = xlVeryHidden Then
xWs.Visible = True
End If
Next

werden Blätter die nur xlhidden sind nicht sichtbar gemacht. Lösch mal If...
Beinhalten strDateinamOhneMakro und strDateinamMitMakro die Endung? Dann lösche diese. Sie wird durch die Angabe von FileFormat automatisch erzeugt.
Dimensionierungen gehören an den Anfang eines Makros.
Den Pfad würde ich in eine Konstante packen.
Gruß
Rudi
AW: Löschen von Reitern
29.10.2020 11:38:22
Reitern
Hallo Rudi,
vielen Dank für Deine Hinweise. Habe sie umgesetzt. Läuft auf meinem Rechner wie zuvor, auf den anderen nicht.
Anzeige
AW: Löschen von Reitern
27.10.2020 13:19:37
Reitern
HI
schwer zu sagen, ohne die Rechner und die Unterschiede zu kennen.
Wenn Bestimmte Befehle auf einem Rechner laufen und auf einem anderen nicht, dann liegt es häufig daran, dass die entsprechenden Verweise korrupt sind.
das erkennt man daran, dass VBA-Explorer unter EXTRAS - OPTIONEN - VERWEISE bei einem aktiven Verweis was seltsames steht.
In der Regel reicht es dann aus, diesen Haken zu entfernen, VBA wird benötigte Verweise im Regelfall erkennen und selbst neu setzen und dabei korrigieren.
ansonsten stellt sich die Frage, ob es bei der beschriebenen Aufgabe nicht einfacher ist, einfach das benötigte Tabellenblatt in eine neue Datei zu kopieren.
Gruß Daniel
Anzeige
AW: Löschen von Reitern
29.10.2020 11:47:45
Reitern
Hallo Daniel,
vielen Dank für Deine Mühe. Die eingetragenen Verweise sind auf allen Rechnern gleich. Bin schon dabei, das gleiche Ziel auf anderem Wege zu erreichen. Mal sehen, welche Komplikationen da dann auftreten...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige