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

Sub kann beim Speichern nicht ausgeführt werden

Sub kann beim Speichern nicht ausgeführt werden
23.03.2017 16:00:28
Philipp
Hallo Excelperten,
ich habe mehrere Dateien zur Liquiditätsplanung von Projekten, die alle gleich aufgebaut sind. In das Template, mit dem diese Dateien erstellt werden, habe ich neue Funktionen eingebaut und die bestehenden Projektdateien sollen ebenfalls die neuen Funktionen erhalten. Deshalb habe ich in eine externe Datei ein Makro geschrieben, das verkürzt so aufgebaut ist:
- Öffne bestehendes Projektsheet (sFilename)
- Öffne Template (sFilenameTemplate)
- Kopiere alle Eingabefelder aus Projektsheet (sFilename) in das Template (sFilenameTemplate)
- Schließe Projektsheet (sFilename)
- Speichere Template unter dem Namen des Projektsheets (sFilename & „_NEW“) ab. Und genau hier kommt es zum Fehler.
Insgesamt gibt es also drei Dateien: Das Projektsheet, das Template und die Datei zur Übertragung ins neue Template.
Der Befehl zum Speichern kommt aus der Datei zur Übertragung, also jene Datei die das oben beschriebene Makro enthält. Das Template selbst hat im Modul "DieseArbeitsmappe" ein Makro "Workbook_BeforeSave" (Private Sub), das dieses Makro ausführt: „Tabelle1.HidePeriods“ (Public Sub). Beim Ausführen dieses Makros schlägt jedesmal der Debugger Alarm mit
"Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler. Klicke ich auf Beenden, wird die Datei dennoch gespeichert.
Woran kann das liegen?
Ich hoffe, das ist soweit verständlich.
Vielen Dank im Voraus!

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

Betreff
Datum
Anwender
Anzeige
Update: Problem näher eingegrenzt
23.03.2017 16:30:03
Philipp
Nun konnte ich das Problem weiter eingrenzen: Das aufgerufene Makro "Tabelle1.HidePeriods" ruft wiederum das Makro "sheets_unprotect" auf:
Sub sheets_unprotect()
Dim sWBname As String
Application.ScreenUpdating = False
sWBname = ThisWorkbook.Name
Workbooks(sWBname).Sheets(1).Unprotect "XYZ"
Workbooks(sWBname).Sheets(2).Unprotect "XYZ"
Workbooks(sWBname).Sheets(3).Unprotect "XYZ"
Workbooks(sWBname).Sheets(4).Unprotect "XYZ"
End Sub
Obwohl der Debuger mit Einzelschritten ohne Fehlermeldung durchläuft und auch die Variable sWBname das richtige Workbook hinterlegt hat, wird der Blattschutz nicht aufgehoben. Eine Diagnose aus der Ferne ist wahrscheinlich schwer, aber hat vielleicht dennoch jemand eine Idee, woran das liegen könnte?
Anzeige
AW: Update: Problem näher eingegrenzt
23.03.2017 19:06:59
ChrisL
Hi Philipp
Der Index (1, 2,...) muss nicht unbedingt mit der Tabellenreihenfolge überein stimmen. Prüfe mal mittels Namen, ob du den Schutz für die richtigen Blätter aufhebst...
MsgBox Sheets(1).Name
Vielleicht wird im weiteren Prozess ein Event aufgerufen, welches den Blattschutz wieder herstellt.
Eher nicht die Ursache, aber dennoch präziser...
Sub sheets_unprotect()
Dim WB As Workbook
Application.ScreenUpdating = False
Set WB = ThisWorkbook
WB.Sheets(1).Unprotect "XYZ"
WB.Sheets(2).Unprotect "XYZ"
WB.Sheets(3).Unprotect "XYZ"
WB.Sheets(4).Unprotect "XYZ"
End Sub
cu
Chris
Anzeige
AW: Update: Problem näher eingegrenzt
27.03.2017 09:01:12
Philipp
Hallo Chris,
danke für deine Antwort und Entschuldung für meine späte Rückmeldung. Das Problem konnte ich auch mit der Änderung der Deklaration von String auf Workbook nicht lösen. Die Nummerierung der Sheets ist nicht ursächlich, die habe ich hier nur zur Vereinfachung durchnummeriert. In dem original Quelltext wird mit festen Namen gearbeitet (WB.sheets("Name"). etc.).
Könnte es was damit zu tun haben, dass die erste Sub in einem Tabellenmodul liegt und/oder das Workbook_BeforeSave Modul eine Private Sub ist? Mein Gedanke war, dass dies eigentlich unproblematisch sein sollte, weil das Workbook aus dem die Makros ausgeführt werden, in diesem Zeitpunkt auch das ActiveWorkbook ist. Aber eine andere Erklärung finde ich irgendwie nicht.
Anzeige
AW: Update: Problem näher eingegrenzt
27.03.2017 09:41:15
ChrisL
Hi Philipp
Solange die Prozeduren abgespielt werden (zur Sicherheit testen mit einer MsgBox o.ä.), spielt es keine Rolle in welchem Modul sie sind.
Ich würde die Datei mal schrittweise abspecken (Code löschen, testen, Code löschen, testen usw.). Entweder findest du so die Ursache selber oder es bleibt eine Beispieldatei fürs Forum übrig.
cu
Chris

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige