Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
368to372
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
368to372
368to372
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Probleme mit Modulnamen bei VBA-Codegenerierung

Probleme mit Modulnamen bei VBA-Codegenerierung
26.01.2004 10:21:58
Norbert Stück
Ich habe Probleme beim Einfügen einer Workbook_open-Procedure mittels VBA im VBProject "DieseArbeitsmappe" einer anderen Datei. Das Einfügen funktioniert bei Verwendung der englischen Oberfläche nicht, da das Modul dann "ThisWorkbook" heißt und der Name im Code fest codiert ist.
Kann ich den Namen ermitteln oder mittels einer Namensprüfung den Abbruch verhindern?
Set wb = ActiveWorkbook.VBProject.VBComponents("DieseArbeitsmappe")

With wb.CodeModule
.InsertLines 3, "

Private Sub Workbook_Open()"
.InsertLines 4, "Dim tabelle As Variant"
.InsertLines 5, "For Each tabelle In Worksheets()"
.InsertLines 6, "If tabelle.ProtectContents = True Then"
.InsertLines 7, "tabelle.EnableAutoFilter = True"
.InsertLines 8, "tabelle.EnableOutlining = True"
.InsertLines 9, "tabelle.Protect contents:=True, userInterfaceOnly:=True"
.InsertLines 10, "End If"
.InsertLines 11, "Next tabelle"
.InsertLines 12, "End Sub
"
End With

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit Modulnamen bei VBA-Codegenerierung
26.01.2004 11:11:01
PeterA
Hallo Norbert !
Ich hab mit folgendem Code mal di3e Module ausgelesen. Hatte gedacht, das ThisWorkbook bzw. DieseArbeitsmappe immer VBComponents 1 hätte. Aber offensichtlich hat es immer die 2. Zumindest bei meinen Tests. Schau mal nach ob das bei dir auch so ist. Dann könntenst du es mit
Set Test2 = ActiveWorkbook.VBProject.VBComponents(2) ansprechen.
Ist nur eine möglichkeit, die mir selbst nicht besonders gefällt aber immerhin ;-)

Set Test1 = ActiveWorkbook.VBProject.VBComponents(1) ==> Tabelle1
Set Test2 = ActiveWorkbook.VBProject.VBComponents(2) ==> ThisWorkbook/DieseArbeitsmappe
Set Test3 = ActiveWorkbook.VBProject.VBComponents(3) ==> Tabelle2
Set Test4 = ActiveWorkbook.VBProject.VBComponents(4) ==> Tabelle3
Anzeige
AW: Probleme mit Modulnamen bei VBA-Codegenerierung
26.01.2004 11:57:39
GerdW
DieseArbeitsmappe ist immer die 1. Komponente, egal in welcher Sprache.
Set wb = ActiveWorkbook.VBProject.VBComponents(1)

Gerd
AW: Probleme mit Modulnamen bei VBA-Codegenerierung
26.01.2004 13:26:41
PeterA
Hi Gerd !

Bist du da sicher? Hast du auch mein Posting gelesen ?
Bei mir ist es immer 2
Ciao Peter
AW: Probleme mit Modulnamen bei VBA-Codegenerierung
26.01.2004 13:51:03
GerdW
Habe deine Antwort nicht gelesen. Mir ist das noch nie passiert, dass
Thisworkbook nicht Komponente 1 ist! Aber gut, dass du darauf hinweist.
Dann muss man halt die Eigenschaften der Komponente abklappern, die ja
z.T. eindeutig sind.
Gerd
AW: Probleme mit Modulnamen bei VBA-Codegenerierung
26.01.2004 14:05:37
Norbert
Danke zusammen, werde es ausprobieren.
Norbert
AW: Probleme mit Modulnamen bei VBA-Codegenerierung
27.01.2004 11:44:51
Norbert
Hallo Gerd und Peter,
habe das Problem über eine Fehlerbehandlung gelöst, indem ich beim Fehler (wb = ... "DieseArbeitsmappe" mit englischen Language Settings) in der Fehlerroutine die Einstellung "ThisWorkbook" bei der Variablenzuweisung verwende.
Der Vorschlag mit VBComponents(1) hat leider nur funktioniert, wenn ich den VBA-Editor mit hinterlegtem Passwort vorher manuell geöffnet habe, was ein normaler Anwender natürlich nicht tun sollte. Sonst gibt es einen Runtime-error (siehe mein Beitrag im Forum vom 26.01.2004 17:03:04) und Excel wird geschlossen.
Danke nochmal.
Gruß
Norbert
Anzeige
AW: Probleme mit Modulnamen bei VBA-Codegenerierung
27.01.2004 13:04:09
PeterA
Hallo Norbert !
Ja ist auch eine Möglichkeit.
So würde es aber auch gehen.

Private Sub CommandButton1_Click()
Anzahl = ActiveWorkbook.VBProject.VBComponents.Count
For x = 1 To Anzahl
Set objekte = ActiveWorkbook.VBProject.VBComponents(x)
If objekte.codemodule.Name = "DieseArbeitsmappe" Or _
objekte.codemodule.Name = "ThisWorkbook" Then
Exit For
End If
Next
MsgBox objekte.codemodule.Name
End Sub


Ciao Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige