2
www.ChF-Online.de  

Module löschen

   Neuigkeiten
   API-Aufrufe in VBA
   VBA2HTML
   Word
   Word-VBA
 Verschiedenes
 Feld-Arbeiten
 Form-Sachen
 Menü-/Symbolleisten
 VBA und Lotus Notes
 VBA und Mail
aktiv aktiv Inside VBAIDE
 Debug-Informationen
 Module verwalten (I)
aktiv  Module verwalten (II)
 VBA-Module exportieren
 Prozedur-Übersicht (I)
 Prozedur-Übersicht (II)
 Projekt-Verweise
 Von Word nach Outlook
 Fix-und-Fertiges/Projekte
   Word2007 (RibbonX)
   Word2010 (RibbonX)
   Outlook-VBA
   Links zu VB(A)
   DocToHelp
   Netport Express XL
   Astronomie
   Gästebuch
   Volltextsuche
   Sitemap
   Buch:Word-Programmierung
   Impressum & Kontakt
   Datenschutzerklärung
Getestet unter Word97Getestet unter Word2000  
Print
Module löschen

Das Löschen von Forms, Modulen oder Klassen zur Laufzeit aus einer Vorlage geht erfolgt direkt über die Angabe des Namens. Befindet sich z.B. das Modul Modul1 in der Dokumentvorlage normal.dot, kann es mit folgendem Aufruf gelöscht werden:

1    Sub Modullöschen()
2    With NormalTemplate.VBProject.VBComponents
3            .Remove .Item("Modul1")
4    End With 
5    End Sub

Achtung:
Das Modul o.a. wird direkt und ohne Sicherheitsabfrage gelöscht. Es wird auch nicht, wie beim manuellen Löschen in der IDE, erst ein export angeboten!

Dieser direkte Aufruf beinhaltet aber auch ein Risiko: Wird das Makro ein zweites mal aufgerufen oder stimmt der Modul-Name nicht, wird die Fehlermeldung 9 ("Index außerhalb des gültigen Bereichs") ausgegeben, da das angegebene Modul nicht mehr in der Liste der Module vorhanden ist.
Um Fehler zu vermeiden, sollte daher vor dem Löschen zuerst geprüft werden, ob das Modul, die Form oder die Klasse in der Dokumentvorlage vorhanden ist. Dieses kann nur mit einer Prüfung aller enthaltenen Komponenten (VBComponents) erreicht werden. Dazu wird eine Laufvariable i verwendet, die über alle Komponenten läuft. Der zu entfernde (Modul-)Name wird in der Variablen sName eingetragen. Nur wenn der Name gefunden wird, wird das Modul entfernt und anschließend die Suche beendet, da der Name eineindeutig ist.

1    Sub Modullöschen2()
2    Dim i As Integer 
3    Dim sName As String 
4    For i = 1 To NormalTemplate.VBProject.VBComponents.Count
5    sName = NormalTemplate.VBProject.VBComponents.Item(i).Name
6    If sName = "Modul1" Then 
7        With NormalTemplate.VBProject.VBComponents
8            .Remove .Item(sName)
9        End With 
10       Exit For 
11   End If 
12   Next i
13   End Sub 

Um Module aus anderen Dokumentvorlagen zu entfernen, müssen diese zusätzlich in einer For ... Each Schleife durchlaufen werden. Sofern aber der Name in mehreren Vorlagen verwendet wurde, wird dieses mit obigem Makro nur beim ersten Auffinden gelöscht; u.U. wird dann das falsche Modul gelöscht.


 Besucher: 42 online  |  11 heute  |  3610 diesen Monat  |  2151117 insgesamt | Seitenaufrufe: 114   Letzte Änderung: 24.06.2006 © 2001-18 Christian Freßdorf
  Was ist der Unterschied zwischen einer Dame und einem Diplomaten?
-- Sagt ein Diplomat "ja", meint er "vielleicht", sagt er "vielleicht", meint er "nein", und sagt er "nein", ist er kein Diplomat.
-- Sagt eine Dame "nein", meint sie "vielleicht", sagt sie "vielleicht", meint sie "ja", und sagt die "ja", ist sie keine Dame.
Charles Maurice de Talleyrand, 1754-1838, frz. Staatsmann
 powered by phpCMS and PAX