Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Formulare und Objekte Exportieren

Forumthread: VBA - Formulare und Objekte Exportieren

VBA - Formulare und Objekte Exportieren
Sascha
einen schönen guten abend an alle,
hab da ein kleines problem, und vielleicht kann mir jemand helfen.
ich arbeite mit mehreren excel dateien (ca. 15) in denen daten per vba mittels userform etc erfasst und berechnet werden.
jetzt habe ich das problem, wenn ich userformen etc. ändere, oder optimieren möchte, muss ich das bei allen 15 dateien machen.
gibt es eine möglichkeit den gesamten ordner im vba projekt "formulare" zu exportieren um ihn in einer anderen excel datei zu importieren.?
lieben gruß
sascha
Anzeige
VBA Projekt - Import Export
13.12.2010 20:21:45
Matthias
Hallo
Du kannst doch VBA-Projekte Im- und Exportieren
Userbild
einfach mit rechter Maustaste auf das Formular klicken
Gruß Matthias
AW: VBA Projekt - Import Export
13.12.2010 20:31:38
Sascha
hallo matthias...
danke für deine schnelle antort...
ja das mit den exportieren von einzelnen userformen etc. das funktioniert...
aber kann man auch den gesamten ordner exportieren, (da sich in dem ordner formulare bei mir fast 30 userformen befinden)
lieben gruß
sascha
Anzeige
Hast du eine Maus? Probier mal D&D! orT
13.12.2010 22:18:15
Luc:-?
Gruß Luc :-?
AW: Hast du eine Maus? Probier mal D&D! orT
14.12.2010 12:13:57
Sascha
hallo luc,
was meinst du mit D&D?
lieben gruß
Drag&Drop! Gruß owT
14.12.2010 13:12:03
Luc:-?
:-?
Anzeige
AW: VBA - Formulare und Objekte Exportieren
14.12.2010 12:30:39
Sascha
@ luc - du meist drop&drag...
ja das geht mit einzelnen forms....aber ich möchte gerne alle userformen auf einmal bewegen
lieben gruß
sascha
Drag'n'Drop geht NUR mit Einzelmodulen,...
14.12.2010 13:25:36
Luc:-?
…Sascha,
eine UF ist auch ein Modul (.frm). Alle gleichzeitig geht dann nur mit VBA über VBProject…Components. Bspp für Module sind im Archiv zu finden.
Tipp: Die .frm-Module eindeutig identifizieren (Typ, mal rausbekommen, was der für 'ne TypNr hat, bei Dokumentklassenmodulen ist das bspw 100) und dann in einer For Each-Schleife über die .Components genau nach diesen suchen und, wenn gefunden, exportieren bzw in das andere Projekt importieren.
Gruß Luc :-?
Anzeige
Nachtrag: MakroRec geht dafür nicht! owT
14.12.2010 13:26:46
Luc:-?
:-?
AW: Drag'n'Drop geht NUR mit Einzelmodulen,...
14.12.2010 20:44:52
Sascha
Hallo Luc,
nochmals vielen Dank für deine Hilfe, aber ich lese aus deinen Antworten raus,
dass dies garnicht (zumindest für mich) so leicht umzusetzen ist.
liebe grüße
sascha
Das mag sein! Schau mal ins Archiv! ;-) owT
15.12.2010 02:50:19
Luc:-?
:-?
Anzeige
AW: VBA - Formulare und Objekte Exportieren
15.12.2010 14:05:10
Sascha
So ich nochmal...
hab hier im archiv etwas gestöbert und zum exportieren von Modulen folgende codezeilen gefunden
von Heiko S. (https://www.herber.de/forum/archiv/624to628/t625181.htm)
Sub ExportModule()
Dim vbc As Object
Dim strPath As String
strPath = "C:\Copy\Muell\"
With ActiveWorkbook.VBProject
For Each vbc In .VBComponents
vbc.Export strPath & vbc.Name & ".bas"
Next vbc
End With
End Sub

Das funktioniert auch super.
Jetzt meine Frage:
wie kann ich die Exportierten Daten per VBA wieder Importieren?
liebe grüße
sascha
Anzeige
K.A., viell Import? Übrigens hast du für...
15.12.2010 15:07:45
Luc:-?
…UF-Module die falsche Typ-Endung, Sascha!
Das sind forms, also .frm! Deshalb habe ich ja auch TypVgl geschrieben. Neben .bas (=normale Module) gibt's noch .cls (alle Klassenmodule) und eben .frm (könnte auch frame bedeuten). Mit der falschen Endung wirst du die wohl kaum wieder richtig importieren können.
Gruß Luc :-?
Anzeige
AW: K.A., viell Import? Übrigens hast du für...
16.12.2010 11:03:59
Sascha
hallo luc...
ja jetzt versteh ich so langsam was du meinst :) -- (werd auch mein status bei excel vba runtersetzen :) )
also ich habs jetzt so gelöst...codezeilen hier im archiv gefunden von nepumuk:
Module Exportieren:
Public Sub prcExort()
Dim objVBComponent As Object
Dim objWorkbook As Workbook
Dim strType As String
Set objWorkbook = ActiveWorkbook
For Each objVBComponent In objWorkbook.VBProject.VBComponents
With objVBComponent.CodeModule
Select Case objVBComponent.Type
Case 1
strType = ".bas"
Case 2, 100
strType = ".cls"
Case 3
strType = ".frm"
End Select
objWorkbook.VBProject.VBComponents(objVBComponent.Name).Export _
"C:\Export\" & objVBComponent.Name & strType
End With
Next
End Sub

Module Importieren: (Wobei ich hier auf den Import von .cls dateien verzichte)
Public Sub prcImport()
Dim objVBComponents As Object, strFilename As String
With ActiveWorkbook.VBProject
For Each objVBComponents In .VBComponents
Select Case objVBComponents.Type
Case 1, 2, 3
.VBComponents.Remove .VBComponents(objVBComponents.Name)
Case 100
With objVBComponents.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
strFilename = Dir$("C:\Gerling\GK\60_Kunden\6020_Dokumentation (Entwicklung)\! _
_Dokumentation\Neue Doku mit O2010\Vorlagen_Doku_Office 2010\ABFRAGEMASKE\ExportOfficebsp\" & "*.*")
Do While strFilename  ""
If UCase$(Right$(strFilename, 4)) = ".BAS" Or _
UCase$(Right$(strFilename, 4)) = ".FRM" Then
.VBComponents.Import "C:\Export\" & strFilename
End If
strFilename = Dir$
Loop
On Error Resume Next
For Each objVBComponents In .VBComponents
If objVBComponents.Type = 2 Then
Err.Clear
If Left$(objVBComponents.Name, 17) = "DieseArbeitsmappe" Or _
Left$(objVBComponents.Name, 7) = "Tabelle" Or _
Left$(objVBComponents.Name, 8) = "Diagramm" Then
.VBComponents(Left$(objVBComponents.Name, Len(objVBComponents.Name) - 1)).  _
_
CodeModule.InsertLines 1, objVBComponents.CodeModule.Lines( _
1, objVBComponents.CodeModule.CountOfLines)
If Err.Number = 0 Then
.VBComponents.Remove .VBComponents(objVBComponents.Name)
Else
Debug.Print objVBComponents.Name
End If
End If
End If
Next
End With
End Sub

liebe grüße
Sascha
Anzeige
Na, siehste, geht doch...! FroWeihn! owT
16.12.2010 15:08:32
Luc:-?
:-?
;
Anzeige
Anzeige

Infobox / Tutorial

VBA - Formulare und Objekte Exportieren in Excel


Schritt-für-Schritt-Anleitung

Um VBA-Formulare und Objekte in Excel zu exportieren, kannst Du die folgenden Schritte befolgen:

  1. Öffne die Excel-Datei, die das VBA-Projekt enthält.
  2. Gehe in den VBA-Editor (ALT + F11).
  3. Suche das Formular oder Modul, das Du exportieren möchtest, im Projektfenster.
  4. Klicke mit der rechten Maustaste auf das Formular oder Modul.
  5. Wähle „Exportieren“ aus dem Kontextmenü.
  6. Wähle den Zielordner und speichere die Datei mit der Endung .frm für Formulare oder .bas für Module.

Um mehrere Formulare zu exportieren, kannst Du ein VBA-Makro verwenden:

Sub ExportModule()
    Dim vbc As Object
    Dim strPath As String
    strPath = "C:\DeinPfad\"
    With ActiveWorkbook.VBProject
        For Each vbc In .VBComponents
            vbc.Export strPath & vbc.Name & ".frm"
        Next vbc
    End With
End Sub

Häufige Fehler und Lösungen

  • Fehler: Exportierte Dateien sind nicht im richtigen Format.

    • Lösung: Stelle sicher, dass Du die richtige Endung verwendest. .frm für Formulare und .bas für Module.
  • Fehler: Fehlermeldung beim Importieren.

    • Lösung: Überprüfe, ob die Dateien im korrekten Verzeichnis sind und dass Du die richtigen Importmethoden verwendest.

Alternative Methoden

Falls Du nicht alle Formulare manuell exportieren möchtest, gibt es auch andere Methoden:

  • Drag & Drop: Wenn Du mit Excel 2010 oder höher arbeitest, kannst Du die Formulare auch durch Ziehen in den gewünschten Ordner exportieren, allerdings funktioniert dies nur mit einzelnen Modulen.

  • VBA-Skripte: Erstelle ein VBA-Skript, das alle Formulare in einem Rutsch exportiert, wie im vorherigen Abschnitt gezeigt.


Praktische Beispiele

Hier sind einige praktische Beispiele, um mit VBA-Formularen zu arbeiten:

  1. Export aller VBA-Komponenten:

    Public Sub prcExort()
       Dim objVBComponent As Object
       Dim strType As String
       For Each objVBComponent In ActiveWorkbook.VBProject.VBComponents
           Select Case objVBComponent.Type
               Case 1
                   strType = ".bas"
               Case 2, 100
                   strType = ".cls"
               Case 3
                   strType = ".frm"
           End Select
           objVBComponent.Export "C:\Export\" & objVBComponent.Name & strType
       Next
    End Sub
  2. Import von exportierten VBA-Komponenten:

    Public Sub prcImport()
       Dim strFilename As String
       strFilename = Dir$("C:\Export\*.*")
       Do While strFilename <> ""
           If UCase$(Right$(strFilename, 4)) = ".FRM" Or UCase$(Right$(strFilename, 4)) = ".BAS" Then
               ActiveWorkbook.VBProject.VBComponents.Import "C:\Export\" & strFilename
           End If
           strFilename = Dir$
       Loop
    End Sub

Tipps für Profis

  • Verwende VBA-Funktionen: Nutze die Möglichkeit, mit VBA die Komponenten automatisch zu exportieren und importieren, um Zeit zu sparen.

  • Backup deiner Projekte: Erstelle regelmäßig Sicherungskopien deiner VBA-Projekte, bevor Du Änderungen vornimmst.

  • Dokumentiere deinen Code: Halte fest, welche Änderungen Du an den Formularen vornimmst, um die Nachverfolgung zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich alle UserForms auf einmal exportieren?
Du kannst ein VBA-Skript verwenden, das alle UserForms in einem Rutsch exportiert. Siehe das Beispiel im Abschnitt „Praktische Beispiele“.

2. Was ist der Unterschied zwischen .frm und .bas Dateien?
.frm Dateien sind für UserForms, während .bas Dateien für reguläre Module verwendet werden.

3. Gibt es eine Möglichkeit, VBA-Formulare zwischen verschiedenen Excel-Dateien zu übertragen?
Ja, Du kannst die VBA-Formulare exportieren und in eine andere Excel-Datei importieren, indem Du die oben beschriebenen Methoden verwendest.

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