Probleme beim löschen von Modulen

  • #1
F

freestyler96

Bekanntes Mitglied
Themenersteller
Dabei seit
11.01.2005
Beiträge
114
Reaktionspunkte
0
Ort
Berlin
Hallo an alle,

ich habe mal wieder ein Problem und hoffe auf eure Hilfe.

Folgendes:

1. Es gibt eine Gesamtdatei für ein Vielzahl von Mitarbeitern, welche per Mail verschickt wird.

2. Wenn der Mitarbeiter die Datei DAS ERSTE MAL öffnet wird ein Makro gestartet:

Private Sub Workbook_Open()
Aufbereitung
End Sub

3. Ist das Makro durchgelaufen wird das Modul gelöscht, da die Funktion nur der ersten Aufbereitung dient:

Sub Modullöschen()

With Application.VBE.ActiveVBProject
For Each VBComponente In .VBComponents
If VBComponente.Type = 1 Then .VBComponents.Remove VBComponente
Next VBComponente
End With
End Sub

4. Hiernach speichert der Mitarbeiter die neue Datei auf seinem Rechner.

Problem:

Wird die neu gespeichert Datei geöffnet ist immer noch unter diese Arbeitsmappe der Aufruf zu Aufbereitung unter
Private Sub Workbook_Open() enthalten was zu einer Fehlermeldung führt.

Frage:

Wie erkläre ich nu meinem begriffsstutzigen Rechner, dass auch diese Prozedur [Private Sub Workbook_Open()] gelöscht werden soll?

Hat bitte jemand einen Vorschlag?


Vielen Dank


Fibo
 
  • #2
Hallo an alle,

leider habe ich zu diesem Thema immer noch keine Lösung finden können.
Ganz im Gegenteil. Nun ist ein weiteres Problem dazu gekommen. Zusätzlich
zu dem bereits geschilderten Vorgang muss ich nun auch noch Klassenmo-
dule automatisch loswerden.

Hat vielleicht einer der Tüfftler eine Idee dazu? Ich bin mit meinem Latein
am Ende.

Einen guten Start ins neue Jahr @ all und;

Vielen Dank


Fibo
 
  • #3
Hallo Fibonacci,

dann probier's mal mit Folgendem:
Code:
Option Explicit
Const b_AllesOKzumLoeschen As Boolean = False

Private Sub Workbook_Open()
  

 ->*** hier machst Du deinen normalen Kram

 ->***wenn alles ok mit der Vorverarbeitung ist, Flag zum Löschen des Codes setzen
  b_AllesOKzumLoeschen =true
  
  

 ->*** Code löschen ?
  If b_AllesOKzumLoeschen Then

    Dim vbkomponente As Object
   ->*** Module, Klassenmodule, Userformen wegraeumen
    For Each vbkomponente In Application.VBE.ActiveVBProject.VBComponents
      If vbkomponente.Type = 1 Then
        Application.VBE.ActiveVBProject.VBComponents.Remove vbkomponente->Modul
      ElseIf vbkomponente.Type = 2 Then
        Application.VBE.ActiveVBProject.VBComponents.Remove vbkomponente->KlassenModule
      ElseIf vbkomponente.Type = 3 Then
        Application.VBE.ActiveVBProject.VBComponents.Remove vbkomponente->Userform
      End If
    Next

   ->*** Tabellen-Code wegraeumen
    For Each vbkomponente In Application.VBE.ActiveVBProject.VBComponents
      If vbkomponente.Type = 100 Then
        If vbkomponente.Name <> DieseArbeitsmappe Then
         ->vbkomponente.CodeModule.DeleteLines 1, vbkomponente.CodeModule.CountOfLines
        End If
      End If
    Next

   ->*** Code in DieseArbeitsmappe wegraeumen (code des Workbooks)
    For Each vbkomponente In Application.VBE.ActiveVBProject.VBComponents
      If vbkomponente.Type = 100 Then
        If vbkomponente.Name = DieseArbeitsmappe Then
          ->vbkomponente.CodeModule.DeleteLines 1, vbkomponente.CodeModule.CountOfLines
        End If
      End If
    Next
  End If
End Sub

Dieser Code muß in->DieseArbeitsmappe' stehen.

Wenn Du dir den Code anschaust, siehst Du das die Code-Zeilen in->DieseArbeitsmappe' zuletzt gelöscht werden. Andernfalls würde der Makro zu früh  beendet (zwangsweise  wegen fehlendem Code  ;D ).

In Excel97 hab ich es so ausprobiert - läuft   :D
Bei Excel2000/2003/XP mußt du mal schauen, welche Einstellungen du unter Makro->Sicherheit->... benötigst, damit gelöscht werden kann.

Zum Ausprobieren solltest Du dir eine 2. Variable kreieren, die das Löschen erstmal verhindert. Diese Datei ist dann dein Backup.
Dann legst du eine Kopie der Datei an, z.B. ...._scharf, editierst die Sperre so, daß Löschen erfolgen kann, und speicherst + schließt die Datei.
Nach dem Öffnen dieser scharfen Datei sollte dann aller Code gelöscht sein, wenn deine->Vorverarbeitung' positiv zu Ende gekommen ist.

!!! Code wird durch diesen Makro komplett gelöscht !!!

Gruß Matjes  :)
 
  • #4
Hallo Matjes,

Vielen Dank, dass du dich mit meinem Problem beschäftigt hast.

Wenn ich den Code nach dem Öffnen starte funktioniert er. Starte ich diesen mit WorkbookOpen oder trage ihn dort direkt ein, klappt es nicht. Passt aber trotzdem, da ich die Prozedur (Datenverarbeitung) manuell starte. Somit kann ich ihn einfach hinten anhängen.

Vielen Dank und eine guten Start in ein erfolgreiches neues Jahr;


Fibo
 
  • #5
Hallo Fibonacci,

fein, dass es erstmal geklappt hat  :D

Starte ich diesen mit WorkbookOpen oder trage ihn dort direkt ein, klappt es nicht.
Kannst Du mir dafür ein Beispiel-Excelmappe an mein mailaddy schicken.

Gruß Matjes :)
 
Thema:

Probleme beim löschen von Modulen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben