So benennen Sie CodeModule von ThisWorksheet ordnungsgemäß um

8

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?

    
Peter Albert 05.11.2013, 14:46
quelle

1 Antwort

10

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

%Vor%

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

heißen

Die Umgehungslösung besteht darin, das ThisWorkbook in wb mithilfe des Fensters Eigenschaften oder

umzubenennen

ThisWorkbook.[_CodeName] = "newName" , weil ThisWorkbook.CodeName schreibgeschützt ist.

    
user2140173 05.11.2013, 15:29
quelle

Tags und Links