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

VBA-Code in WorkbookOpen Methode per VBA einfügen

Forumthread: VBA-Code in Workbook_Open Methode per VBA einfügen

VBA-Code in Workbook_Open Methode per VBA einfügen
06.05.2015 18:03:06
Jörg Müller

Hallo zusammen,
ich lese in einem Excel-File A mit Makros eine CSV-Datei B ein und schreibe diese als XLSM-Datei C in einen Ordner.
Ich schreibe dabei noch eine User-Form aus Datei A mit in die Datei C. Klappt soweit alles wunderbar!
Nur möchte ich beim Schreiben der File C noch VBA-Code in die Workbook_Open Methode des Dokuments einfügen, sodass das Userform auch beim Öffnen der Datei (per frm_userform.show) angezeigt wird.
Eigentlich keine große Sache, aber bisher habe ich es nach langem rumprobieren noch nicht hinbekommen...
Wäre euch sehr dankbar für einen Tipp wie das geht!
Liebe Grüße Jörg-Müller

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA-Code in Workbook_Open Methode per VBA einfügen
06.05.2015 18:38:26
Nepumuk
Hallo,
ein Beispiel:
Public Sub Beispiel()
    Dim lngLine As Long
    With Workbooks("Mappe1").VBProject.VBComponents("DieseArbeitsmappe").CodeModule
        lngLine = .CreateEventProc("Open", "Workbook")
        .InsertLines lngLine + 1, " Userform1.Show"
        .DeleteLines lngLine + 2
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: VBA-Code in Workbook_Open Methode per VBA einfügen
06.05.2015 19:08:42
fcs
Hallo Jörg,
dazu muss man die Code-Zeilen aus dem Modul "DieseArbeitsmappe" von Datei A auslesen und in der Datei C unter "DieseArbeitsmappe" einfügen.
In der Summe dürfte es aber einfacher sein eine Vorlagedatei zu erstellen, die das Userform und die erforderlichen Makros enthält, und dann die Daten der CSV-Datei jeweils in eine Kopie der Vorlagedatei zu schreiben. Das hat auch den Vorteil, dass du nicht den Zugriff auf das VBA-Projekt erlauben muss, wenn du per VBA den Code "manipulierst".
Gruß
Franz
Sub Copy_VBA_Code_von_DateA_nach_DateiC()
'Zur Ausführung der Prozedur muss:
'1. Im VBA-Editor unter Extras--> Verweise... _
der Verweis auf die _
Microsoft Visual Basic for Applications Extensibility x.x _
aktiviert werden
'2. In Excel unter Extras --> Optionen --> Sicherheit --> Makrosicherheit _
die Option "Zugriff auf das VB-Projekt vertrauen" aktiviert werden.
Dim VBA_A As VBProject, VBA_C As VBProject
Dim wkbA As Workbook, wkbC As Workbook
Dim myVBComponent As VBComponent, varFileName, varFolder, strCode As String
Dim strFile As String
Set wkbA = ThisWorkbook
Set VBA_A = wkbA.VBProject
Set wkbC = Workbooks("Datei_C.xlsm") 'Ziel-Arbeitsmappe entsprechend setzen/anpassen
Set VBA_C = wkbC.VBProject
'Ordner für Export/Import-Code-Files
varFolder = wkbA.Path & Application.PathSeparator
'Userform-Module von A nach B übertragen
Set myVBComponent = VBA_A.VBComponents("Userform1") 'name anpassen
With myVBComponent
varFileName = varFolder & .Name & ".frm"
.Export Filename:=varFileName
End With
VBA_C.VBComponents.Import Filename:=varFileName
Kill varFileName
Kill varFolder & Application.PathSeparator & myVBComponent.Name & ".frx"
'Allgemeine-Module von A nach B übertragen
Set myVBComponent = VBA_A.VBComponents("Modul_UF") 'Name anpassen
With myVBComponent
varFileName = varFolder & .Name & ".bas"
.Export Filename:=varFileName
End With
VBA_C.VBComponents.Import Filename:=varFileName
Kill varFileName
'Code von DieseArbeitsmappe/ThisWorkbook übertragen
'Code in Datei A in Variable einlesen
Set myVBComponent = VBA_A.VBComponents("DieseArbeitsmappe") 'Name evtl anpassen (englisch)
With myVBComponent
If .CodeModule.CountOfLines >= 1 Then
strCode = .CodeModule.Lines(1, .CodeModule.CountOfLines)
Else
strCode = ""
End If
End With
'Code in Datei C einfügen
If strCode <> "" Then
Set myVBComponent = VBA_C.VBComponents("DieseArbeitsmappe")
With myVBComponent
If .CodeModule.CountOfLines >= 1 Then
.CodeModule.DeleteLines 1, .CodeModule.CountOfLines
End If
.CodeModule.AddFromString strCode
End With
End If
End Sub

Anzeige
AW: VBA-Code in Workbook_Open Methode per VBA einfügen
08.05.2015 16:44:19
Jörg Müller
Hallo Franz und Nepumuk,
danke für das Codebeispiel und die guten Anregungen bezüglich der Geschichte mit den VBA-Projekt Sicherheitseinstellungen. Ich schau wie ich das im Detail umsetzen werden. Der Code funktioniert tadellos. Vielen Dank!
Ich wünsche euch ein schönes Wochenende
LG Jörg-Benjamin

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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