Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

vba modul automatisch ersetzen

Forumthread: vba modul automatisch ersetzen

vba modul automatisch ersetzen
otto
Hi,
kann man beim Start einer Datei ein vba modul automatisch ersetzen?
Das Modul heißt z.B. "Start" dies soll bei Workbook.Open gelöscht werden und durch das Modul "Start", das sich in einem bestimmten Ordner befindet, ersetzt werden.
Freue mich auf eure Vorschläge
otto
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Ergänz: vba modubzw. UF automatisch ersetzen
02.09.2009 15:03:02
otto
AW: ohne Fehlerbehandlung
02.09.2009 15:20:50
Chris
Servus,
probiers mal so:
Private Sub Workbook_Open()
Dim Modulname As String
Modulname = "C:\Documents and Settings\stadter\Desktop\Modul2.bas" 'Hier deinen Pfad samt  _
Modulnamen des einzubindeneden Moduls angeben"
With ActiveWorkbook.VBProject
.VBComponents.Remove .VBComponents("Modul2") 'Hier den Modulnamen des zu löschenden Moduls
.VBComponents.Import Pfad2 & Modulname
End With
End Sub
Modul = DieseArbeitsmappe
das Ganze ist ohne Fehlerbehandlung (z.B. Fehlen des angegebenen Moduls,...)
Gruß
Chris
Anzeige
AW: kleiner Fehler
02.09.2009 15:30:08
Chris
Servus,
so:
Private Sub Workbook_Open()
Dim Modulname As String
Modulname = "C:\Documents and Settings\stadter\Desktop\Modul2.bas" 'Hier deinen Pfad samt  _
Modulnamen des einzubindeneden Moduls angeben"
With ActiveWorkbook.VBProject
.VBComponents.Remove .VBComponents("Modul2") 'Hier den Modulnamen des zu löschenden Moduls
.VBComponents.Import Modulname
End With
End Sub

das ist besser, dann macht die pfad2-variable keinen Ärger, auch wenn sie jetzt nicht belegt ist.
Gruß
Chris
Anzeige
AW: kleiner Fehler
03.09.2009 12:48:45
otto
Hi,
funzt bei mir leider nicht, kommt Laufzeitfehler 1004 "Anwendungs- o. Objektdefinierter Fehler"
Wenn ich nun versuche einen Verweis aus VBA-Project zu setzen kommt:"Name steht in Konflikt mit vorhandenem Modul, Projekt oder vorhandener Objektbibliothek"
otto
AW: kleiner Fehler
03.09.2009 14:18:54
Chris
Servus,
hast du unter Extras-Makros-Sicherheit-Vertrauenswürdige Herausgeber-Zugriff auf VB-Project vertrauen einen Haken gesetzt ?
wenn nicht kommt Laufzeitfehler 1004.
Einzeln sind die Modulkomponenten jederzeit einfügbar, als gesamtes VB-project bin ich allerdings überfragt. Die Komponenten müssen eben im angegebenen Pfad abgelegt sein.
DieseArbeitsmappe muss anders gelöst werden, da man es nicht löschen kann und der Import, dann als Klassenmodul erfolgt (evtl . mit Deletelines (Makro per Makro löschen)).
Gruß
Chris
Anzeige
weitere Frage
03.09.2009 12:55:57
otto
Hi,
kann man auch das komplette VBA-Projekt aus einem anderen Workbook übernehmen? also alle UserForms, alle Module und Klassenmodule incl. Diese Arbeitsmappe?
otto
beendet - Danke an alle
07.09.2009 13:44:02
otto
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Modul automatisch ersetzen in Excel


Schritt-für-Schritt-Anleitung

Um ein Excel VBA Modul beim Öffnen einer Arbeitsmappe automatisch zu ersetzen, kannst du den folgenden VBA-Code verwenden. Dieser Code löscht ein bestehendes Modul und importiert ein neues Modul aus einem angegebenen Pfad.

  1. Öffne die Excel-Datei, in der du das Modul ersetzen möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Doppelklicke auf DieseArbeitsmappe im Projektfenster.

  4. Füge den folgenden Code in das Fenster ein:

    Private Sub Workbook_Open()
       Dim Modulname As String
       Modulname = "C:\Documents and Settings\stadter\Desktop\Modul2.bas" 'Pfad zum neuen Modul angeben
       With ActiveWorkbook.VBProject
           .VBComponents.Remove .VBComponents("Modul2") 'Modul, das gelöscht werden soll
           .VBComponents.Import Modulname 'Neues Modul importieren
       End With
    End Sub
  5. Speichere die Datei als xlsm (Makro-enabled Workbook).

  6. Schließe den VBA-Editor und speichere die Arbeitsmappe.

Jetzt wird beim Öffnen der Arbeitsmappe das bestehende Modul durch das neue Modul ersetzt.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt auf, wenn der Zugriff auf das VBA-Projekt nicht erlaubt ist. Stelle sicher, dass du unter Extras > Makros > Sicherheit > Vertrauenswürdige Herausgeber den Zugriff auf das VB-Projekt erlaubt hast.

  • Name steht in Konflikt mit vorhandenem Modul: Dieser Fehler kann auftreten, wenn das Modul, das du löschen möchtest, nicht existiert oder einen anderen Namen hat. Überprüfe den Namen des Moduls und passe den Code entsprechend an.


Alternative Methoden

Eine alternative Methode, um ein VBA Modul zu ersetzen, besteht darin, die Module manuell zu exportieren und zu importieren. Gehe dazu folgendermaßen vor:

  1. Exportiere das Modul, das du ersetzen möchtest, indem du im VBA-Editor mit der rechten Maustaste auf das Modul klickst und "Exportieren" wählst.
  2. Lösche das Modul, das du nicht mehr benötigst.
  3. Importiere das neue Modul über Datei > Importieren und wähle die exportierte Datei aus.

Diese Methode kann nützlich sein, wenn du mehrere Module verwalten musst.


Praktische Beispiele

Hier ist ein weiteres Beispiel, wie du ein Modul namens "Start" ersetzen kannst:

Private Sub Workbook_Open()
    Dim Modulname As String
    Modulname = "C:\Pfad\zu\deinem\Modul\Start.bas"
    With ActiveWorkbook.VBProject
        .VBComponents.Remove .VBComponents("Start")
        .VBComponents.Import Modulname
    End With
End Sub

Achte darauf, den Pfad zu deinem Modul entsprechend zu ändern.


Tipps für Profis

  • Verwende Fehlerbehandlung, um potenzielle Laufzeitfehler abzufangen. Zum Beispiel:

    On Error Resume Next
    .VBComponents.Remove .VBComponents("Modul2")
    On Error GoTo 0
  • Halte deine Module gut organisiert. Verwende beschreibende Namen, um die Verwaltung zu erleichtern.

  • Ziehe in Betracht, ein Backup deiner VBA-Projekte zu erstellen, bevor du Module ersetzt.


FAQ: Häufige Fragen

1. Kann ich auch alle Module auf einmal ersetzen?
Ja, du kannst eine Schleife verwenden, um alle Module zu löschen und zu ersetzen. Achte jedoch darauf, dass du die Namen und Pfade korrekt angibst.

2. Was ist der Unterschied zwischen einem Modul und einer UserForm?
Ein Modul ist ein Container für VBA-Code, während eine UserForm ein benutzerdefiniertes Eingabeformular ist. Beide können in einem VBA-Projekt verwendet werden, haben jedoch unterschiedliche Funktionen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige