| |

Fortgeschrittene ProgrammierungRe: Macros | |  | Autor: RalfH | Datum: 10.10.03 07:24 |
| Servus,
ich hatte das gleiche Problem schon mal in EXCEL-VBA.
Der folgende Code entfernt alle Module, Klassenmodule, Userformen und Verweise aus einem Word-Dokument. Da das gebundene Modul "ThisDocument" ja nicht entfernt werden kann, wird bei diesem nur der gesamte Inhalt gelöscht.
Das ganze ist ein Word-VBA-Makro, kann jedoch mit etwas Aufwand auch in VB-Code umgewandelt werden.
Option Explicit
' VBA-Projekt-Komponententypen:
Const vb_GebundenesModul = 100 ' gebundenes Modul (Einträgen unter <Microsoft
' Word Objekte>)
Const vb_StandardModul = 1 ' Standard-Modul
Const vb_KlassenModul = 2 ' Klassenmodul
Const vb_Userform = 3 ' Userform
Public Sub RemoveVBACode()
' sämtliche VBA-Makros aus dem Dokument entfernen
' - das Dokument muss dazu geöffnet sein
' - den Dateiname OHNE Ordner angeben
RemoveVBACodeFromDocument "Dokument1"
End Sub
' Dateiname - enthält den Dateinamen OHNE Ordner
Private Sub RemoveVBACodeFromDocument(ByVal Dateiname As String)
Dim Projekt, VBKomponente, LinkedFile, I As Long
' Makro-Unterbrechung durch CTRL+PAUSE unterbinden
Application.EnableCancelKey = wdCancelDisabled
If MsgBox( _
"Soll der VBA-Code aus """ & Dateiname & _
""" vollständig entfernt werden?", _
vbQuestion + vbYesNo + vbDefaultButton2) = vbNo Then Exit Sub
On Error GoTo Fehler
' Zeiger auf das VBA-Projekt des Dokumentes setzen
Set Projekt = Documents(Dateiname).VBProject
' Alle Objekte (Module, Userformen, ...) des VBA-Objektes durchlaufen
For Each VBKomponente In Projekt.VBComponents
' alle Code-Module außer den Einträgen unter <Microsoft Word Objekte>
' aus dem Projekt entfernen
If VBKomponente.Type <> vb_GebundenesModul Then
Projekt.VBComponents.Remove VBKomponente
Else
' Inhalt der Code-Module unter <Microsoft Word Objekte> löschen
VBKomponente.CodeModule.DeleteLines 1, _
VBKomponente.CodeModule.CountOfLines
End If
Next VBKomponente
' alle Verweise entfernen
For Each LinkedFile In Projekt.References
' damit wird das Err.Object jedesmal vor dem Entfernen eines
' Verweises zurückgesetzt, damit ist jedesmal die aktuelle
' Fehlernummer verfügbar
' Err.Number = 0 (kein Fehler)
' Err.Number = 57101 (Verweis ist ein Standardverweis/darf und kann nicht
' gelöscht werden)
On Error Resume Next
Projekt.References.Remove LinkedFile
If Err.Number <> 57101 And Err.Number <> 0 Then GoTo Fehler
Next LinkedFile
' Speicher freigeben
Set LinkedFile = Nothing
Set VBKomponente = Nothing
Set Projekt = Nothing
MsgBox "Der VBA-Code wurde erfolgreich aus """ & Dateiname & _
""" entfernt.", vbInformation
' das wars
Exit Sub
' Fehlermeldung
Fehler:
' Speicher freigeben
Set LinkedFile = Nothing
Set VBKomponente = Nothing
Set Projekt = Nothing
MsgBox "Der VBA-Code konnte aus """ & Dateiname & _
""" nicht vollständig entfernt werden!" & vbCr & vbCr & "Fehler:" & _
vbCr & Error, vbExclamation
End Sub Viel Spass,
R@lf |  |
 Macros | 583 | Juergen Mildes | 09.10.03 14:57 |   Re: Macros | 461 | RalfH | 10.10.03 07:24 |    Re: Macros | 372 | Juergen Mildes | 10.10.03 07:56 |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|