Quellcode aus xla (Addin) exportieren
Tobias
vor ein paar Wochen habt ihr mir schon super weitergeholfen, nun habe ich ne weitere Frage zu dem Thema, muss aber nen neuen Thread aufmachen, da der alte ja schon gelöst war.
Ich habe ein Makro, was mir automatisch den Quellcode exportiert und in Textdateien speichert. Dies Makro kann aber nur Quellcode aus dem akutell offenen Workbook exportieren. Ich würde aber gerne auch Quellcode exportieren können, der in einem add-in (xla-Datei) liegt. Dazu müßte ich wohl diese Zeile ändern:
With ActiveWorkbook.VBProject
Indem ich nicht auf ein ActiveWorbook zugreife, sondern auf ActiveAddin oder so. Geht das? Wie geht das? Danke für eure Hilfe!!
Der gesammte Quellcode:
'Prozedur erstellt unter Excel 2003
Sub Code_Export()
'Gesamten Code und Module der aktiven Datei exportieren
'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 myVBComponent As VBComponent, varFolderName, wbAktiv As Workbook
Dim strFile As String
On Error GoTo Fehler
If MsgBox("Sämtlichen VBA-Code der aktiven Mappe exportieren?", _
vbYesNo, "VBA-Code-Export") = vbYes Then
Set wbAktiv = ActiveWorkbook
'Verzeichnis auswählen für Export
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.InitialView = msoFileDialogViewList
'Verzeichnis "C:\Lokale Daten\Test\" als Basis-Verzeichnis für Code- _
Dateien ggf. anpassen
strFile = "D:\VW\" & "Code_" & _
VBA.Replace(wbAktiv.name, ".", "_")
If Dir(strFile, vbDirectory) = "" Then
VBA.MkDir strFile
End If
.InitialFileName = strFile & Application.PathSeparator
.title = "Bitte den Ordner wählen, in dem das Unterverzeichnis " _
& "für Export angelegt werden soll"
If .Show False Then
varFolderName = .SelectedItems(1)
'Unterverzeichnis für Dateien erstellen
varFolderName = varFolderName & Application.PathSeparator _
& Format(Now, "YYYYMMDD_hhmm")
VBA.MkDir Path:=varFolderName
'Unterverzeichnis für TXT-Dateien erstellen
VBA.MkDir Path:=varFolderName & Application.PathSeparator & "TXT"
Else
Exit Sub
End If
End With
With ActiveWorkbook.VBProject
For Each myVBComponent In .VBComponents
With myVBComponent
Select Case .Type
Case 1: strFile = .name & ".bas" 'Allgemeines Modul
Case 2: strFile = .name & ".cls" 'Klassenmodul
Case 3: strFile = .name & ".frm" 'Userform
Case 100: strFile = .name & ".cls" 'Tabelle oder DieseArbeitsmappe
End Select
'alle Module exportieren
.Export filename:=varFolderName & Application.PathSeparator & strFile
'Code der Module als TXT-Datei speichern
.Export filename:=varFolderName & Application.PathSeparator & "TXT" _
& Application.PathSeparator & .name & ".txt"
If .Type = 3 Then 'Userform
'Bei Userformen die erzeugte frx-Datei wieder löschen
strFile = varFolderName & Application.PathSeparator & "TXT" _
& Application.PathSeparator & .name & ".frx"
Kill strFile
Else
End If
End With
Next
End With
End If
MsgBox "Fertig"
Fehler:
With Err
If .Number 0 Then
Select Case .Number
Case 1004
MsgBox "Fehler: " & .Number & vbLf & .description & vbLf _
& "Vor Start des Makros unter Optionen ""Sicherheit --> " _
& "Makrosicherheit"" Option " _
& """Zugriff auf das VB-Projekt vertrauen"" aktivieren!"
Case Else
MsgBox "Fehler: " & .Number & vbLf & .description
End Select
End If
End With
End Sub