Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1424to1428
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Code in WorkbookOpen 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

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

333 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige