Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1544to1548
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

Module aus AddIn einlesen_Teil2

Module aus AddIn einlesen_Teil2
27.02.2017 16:54:38
Peter
Hallo Markus,
Dein Makro lief sehr gut und plötzlich erhalte ich Fehler.
Könntest du bitte mir noch einmal Helfen?
Dein Makro habe ich in "Diese Arbeitsmappe" eingefügt.
Das Makro sieht jetzt so aus.

Private Sub XXXXX()
Option Explicit
'Zuerst wird das AdInn mit allen Modulen geladen
Dim AddInnpfad, AddInName1, AddInName2 As String
Dim intAddIn As Integer
Dim AddInInstalliert As Boolean
Dim AddInInstallieren As Boolean
Dim AI As Excel.AddIn
Dim AdInnpfad As String
AdInnpfad = "C:\Test\AddIns-nicht löschen\"
AddInName1 = "AddIn_TestX.xlam"
AddInName2 = AdInnpfad & AddInName1
AddInDatum = FileDateTime(AddInName2)
' Die Namen aller installierten Addins prüfen
For intAddIn = 1 To AddIns.Count
If AddIns(intAddIn).Name = AddInName1 Then
AddInInstalliert = True
Exit For
End If
Next intAddIn
' Addin installieren
On Error Resume Next
Set AI = Application.AddIns.Add(Filename:=AddInName2)
AI.Installed = True
Application.AddIns(AddInName1).Installed = True
End Sub

Bis hierhin funktioniert alles

'Module einlesen
Private Sub Demo()
Const cQuellDateiName = "AddIn_TestX.xlam" 'TODO: Name anpassen
' Komponenten importieren
ImportVBComponents NameSourceProjectFile:=cQuellDateiName, _
DeleteExistingComponents:=True
End Sub
Private Sub DeleteVBComponents()
Dim vbcItem As VBComponent
For Each vbcItem In ThisWorkbook.VBProject.VBComponents
' Standardmodule, UserForms und Klassenmodule löschen
Select Case vbcItem.Type
Case vbext_ct_StdModule, vbext_ct_MSForm, vbext_ct_ClassModule
ThisWorkbook.VBProject.VBComponents.Remove vbcItem
End Select
Next
' Aufräumen
Set vbcItem = Nothing
End Sub
' Wenn DeleteExistingComponents True ist, so werden vor dem
' Importieren die bestehenden Komponenten gelöscht werden!
Private Sub ImportVBComponents(ByVal NameSourceProjectFile As String, _
Optional DeleteExistingComponents As Boolean = True)


Hier erhalte ich den Fehler: Fehler beim Kompilieren: Benutzerdefinierter Typ nich definiert. Was habe ich falsch gemacht?

Dim vbcItem As VBComponent
Dim wbkSource As Workbook
Dim strTempFile As String
If DeleteExistingComponents Then DeleteVBComponents
strTempFile = ThisWorkbook.Path & "\Temp"   ' !!! ohne Extension!
' Bestehende Log-Datei löschen
If Len(Dir(strTempFile & ".log")) Then Kill strTempFile & ".log"
Set wbkSource = Workbooks(NameSourceProjectFile)
For Each vbcItem In wbkSource.VBProject.VBComponents
Select Case vbcItem.Type
Case vbext_ct_StdModule, vbext_ct_MSForm, vbext_ct_ClassModule
' Komponente exportieren
vbcItem.Export strTempFile & ".tmp"
' Komponente importieren
ThisWorkbook.VBProject.VBComponents.Import strTempFile & ".tmp"
' Temp-Dateien löschen
If Len(Dir(strTempFile & ".tmp")) Then Kill strTempFile & ".tmp"
If Len(Dir(strTempFile & ".frx")) Then Kill strTempFile & ".frx"
End Select
Next
' Prüfen ob Import-Fehler auftraten
If Len(Dir(strTempFile & ".log")) Then
MsgBox "Beim Importieren sind Fehler aufgetreten!" & vbLf & vbLf _
& "Details siehe:" & vbLf _
& strTempFile & ".log", _
vbExclamation
End If
'--- Aufräumen ---
Set wbkSource = Nothing
Set vbcItem = Nothing
End Sub

LG,
Peter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
'Dim vbcItem As VBComponent' wird nur erkannt, ...
27.02.2017 17:06:08
Luc:-?
…Peter,
wenn vor dem Kompilieren im VBE auch ein Verweis auf MS VBA Extensibility 5.3 gesetzt wurde.
Gruß, Luc :-?
Besser informiert mit …
AW: 'Dim vbcItem As VBComponent' wird nur erkannt, ...
28.02.2017 09:34:07
Peter
Hallo Luc,
wie setze ich den ein Verweis auf MS VBA Extensibility 5.3?
Grüße, Peter
VBE-Menü Extras - Verweise… u.Position anhaken owT
28.02.2017 13:53:59
Luc:-?
:-?
AW: Module aus AddIn einlesen_Teil2
01.03.2017 15:46:10
Peter
Hallo Zusammen,
der Code von Markus verursacht nun keine Fehler, es liest aber keine Codes mehr ein.
Könnte jemand hier Hilfe leisten und sich den Code anschauen.
Private Sub Demo()
Const cQuellDateiName = "XXX.xlam" 'TODO: Name anpassen
' Komponenten importieren
ImportVBComponents NameSourceProjectFile:=cQuellDateiName, _
DeleteExistingComponents:=True
End Sub
Private Sub DeleteVBComponents()
Dim vbcItem As VBComponent
For Each vbcItem In ThisWorkbook.VBProject.VBComponents
' Standardmodule, UserForms und Klassenmodule löschen
Select Case vbcItem.Type
Case vbext_ct_StdModule, vbext_ct_MSForm, vbext_ct_ClassModule
ThisWorkbook.VBProject.VBComponents.Remove vbcItem
End Select
Next
' Aufräumen
Set vbcItem = Nothing
End Sub
' Wenn DeleteExistingComponents True ist, so werden vor dem
' Importieren die bestehenden Komponenten gelöscht werden!
Private Sub ImportVBComponents(ByVal NameSourceProjectFile As String, _
Optional DeleteExistingComponents As Boolean = True)
Dim vbcItem As VBComponent
Dim wbkSource As Workbook
Dim strTempFile As String
If DeleteExistingComponents Then DeleteVBComponents
strTempFile = ThisWorkbook.Path & "\Temp"   ' !!! ohne Extension!
' Bestehende Log-Datei löschen
If Len(Dir(strTempFile & ".log")) Then Kill strTempFile & ".log"
Set wbkSource = Workbooks(NameSourceProjectFile)
For Each vbcItem In wbkSource.VBProject.VBComponents
Select Case vbcItem.Type
Case vbext_ct_StdModule, vbext_ct_MSForm, vbext_ct_ClassModule
' Komponente exportieren
vbcItem.Export strTempFile & ".tmp"
' Komponente importieren
ThisWorkbook.VBProject.VBComponents.Import strTempFile & ".tmp"
' Temp-Dateien löschen
If Len(Dir(strTempFile & ".tmp")) Then Kill strTempFile & ".tmp"
If Len(Dir(strTempFile & ".frx")) Then Kill strTempFile & ".frx"
End Select
Next
' Prüfen ob Import-Fehler auftraten
If Len(Dir(strTempFile & ".log")) Then
MsgBox "Beim Importieren sind Fehler aufgetreten!" & vbLf & vbLf _
& "Details siehe:" & vbLf _
& strTempFile & ".log", _
vbExclamation
End If
'--- Aufräumen ---
Set wbkSource = Nothing
Set vbcItem = Nothing
End Sub
LG, Peter
Anzeige
AW: Module aus AddIn einlesen_Teil2
02.03.2017 13:43:45
Peter
Hallo Zusammen,
ich bitte nochmals um Eure Hilfe!
Leider bin ich immer noch ein blutiger Anfänger und komme bei diesem Problem nicht weiter.
LG, Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige