Ich versuche, das ThisWorkbook
-Code-Modul eines Excel-Arbeitsblattes mit VBA-Erweiterbarkeit umzubenennen.
Ich beende das mit der Zeile
%Vor% Ich kann die Änderung im VB-Editor sehen und auch auf die Eigenschaften der Arbeitsmappe zugreifen, z. Debug.? wb.Name
.
Allerdings: Wenn ich die Datei speichere und schließe und sie dann wieder öffne, bekomme ich seltsames Verhalten. Wenn das Codemodul vor dem Umbenennen leer war, wird es wieder auf den alten leeren ThisWorkbook
-Namen zurückgesetzt.
Wenn es nicht leer war oder vor dem Speichern gefüllt wurde, habe ich jetzt beides, ein leeres ThisWorkbook
-Modul (das Ereignisse auslösen würde, wenn es welche gäbe) und das befüllte wb
-Modul - das keine Arbeitsmappe auslöst Ereignisse:
Hat jemand dieses Verhalten gesehen - und kennt einen Fix / Workaround?
Schnelle Antwort: ThisWorkbook.[_CodeName] = "newName"
Detaillierte Antwort
Wenn ich Referenzen zu Microsoft Visual Basic For Applications Extensibility 5.3
hinzufüge und deine Zeile führe
Die Eigenschaft ThisWorkbook
Name wird nicht wirklich geändert
Das Speichern und erneute Öffnen der Datei führt zu einer Duplizierung des Objekts ThisWorkbook
Was ziemlich genau bedeutet, dass ich jetzt zwei Workbook
Objekte in einer Arbeitsmappe habe und beide ThisWorkbook
Die Umgehungslösung besteht darin, das ThisWorkbook
in wb
mithilfe des Fensters Eigenschaften oder
ThisWorkbook.[_CodeName] = "newName"
, weil ThisWorkbook.CodeName
schreibgeschützt ist.