VBA - Fehler beim Kompilieren - Objektbibliothek ungültig
#1
Hallo Zusammen,

ich stehe vor einem echt ärgerlichem Problem.

In meiner Arbeitsmappe "Mappe1" habe ich einen CommandButton, mit diesem wird eine neue Arbeitsmappe ("Mappe2") erstellt, gleichzeitig wird in Mappe2 zwei UserFormen importiert und zwei CommandButtons erstellt.

Mit CommandButton1 in Mappe2 soll dann die importierte Userform1 geöffnet werden.
Mit CommandButton2 soll die importierte Userform2 angezeigt werden.

Allerdings bekomme ich beim MouseOver immer die Fehlermeldung "Fehler beim Kompilieren: Die Objektbibliothek ist ungültig oder enthält Verweise Objektdefinitionen, die nicht gefunden werden können."

Ich habe zum testen manuel eine neue Mappe erstellt und einen CommandButton eingebaut. Dann habe ich die zwei Userform mit Drag & Drop in die neu erstellt Arbeitsmappe gezogen. Da hat dann alles funktioniert.

Hier meine Makros:
Code:
' Mappe1 CommandButton

Private Sub PM_Controlling_Click()
    Dim relativePath As String
   Dim btn1 As Object
   Dim Code As String
    
   ' Neue Mappe erstellen:
    Workbooks.Add
    relativeString = ThisWorkbook.Path & "\Mappe2"
    ActiveWorkbook.SaveAs Filename:=relativeString & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
    
   ' UserFormen importieren:
    Workbooks("Mappe2.xlsm").VBProject.VBComponents.Import Filename:="C:\Users\UserForm\Add\UserForm1.frm"
   Workbooks("Mappe2.xlsm").VBProject.VBComponents.Import Filename:="C:\Users\UserForm\Add\UserForm2.frm"
    
   ' Button für UF1 erstellen:
   Set btn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
    , DisplayAsIcon:=False, Left:=10, Top:=10, Width:=110, Height:=25)
    ActiveSheet.OLEObjects(1).Object.Caption = "Project Report"
    btn.Name = "Project_Report"
    
   ' Code für UF1:
    Code = "Private Sub Project_Report_Click()" & vbCrLf
    Code = Code & "    [UserForm1].Show" & vbCrLf
    Code = Code & "End Sub"

    With ActiveWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule
        .insertlines .CountOfLines + 1, Code
    End With

   ' Button für UF2 erstellen:
   Set btn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
    , DisplayAsIcon:=False, Left:=10, Top:=40, Width:=110, Height:=25)
    ActiveSheet.OLEObjects(2).Object.Caption = "Watch Project Report"
    btn.Name = "Watch_Report"
  
   ' Code für UF2:
    Code = "Private Sub Watch_Report_Click()" & vbCrLf
    Code = Code & "    [UserForm2].Show" & vbCrLf
    Code = Code & "End Sub"

    With ActiveWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule
        .insertlines .CountOfLines + 1, Code
    End With
End Sub

_____________________________________________________________________________________________________________________________________

' Code in Mappe2
Private Sub Project_Report_Click()
   [UserForm1].Show
End Sub

Private Sub Watch_Report_Click()
   [UserForm2].Show
End Sub


' UserForm1 Code

Private Sub CommandButton1_Click()
   UserForm2.Label1 = TextBox1.Value
   UserForm2.Label2 = TextBox2.Value
   UserForm2.Label3 = TextBox3.Value
   UserForm2.Label4 = TextBox4.Value

   [UserForm1].Hide
End Sub

Private Sub CommandButton2_Click()
   [UserForm1].Hide
End Sub

'UserForm2 Code

Private Sub CommandButton1_Click()
   [UserForm2].Hide
End Sub

In Mappe2 wird mir dann der Teil [UserForm1].Show blau markiert und die Fehlermeldung kommt.

Ich hoffe jemand kann mir hier helfen wie ich den Fehler beheben kann.
Top
#2
Hallöchen,

hattest Du dazu nicht dieser Tage schon mal die Antwort mit dem Application.OnTime?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
(26.07.2018, 15:48)schauan schrieb: Hallöchen,

hattest Du dazu nicht dieser Tage schon mal die Antwort mit dem Application.OnTime?

Jein, bei der Frage bei der Application.OnTime die Antwort war, habe ich die UFs über den Button importiert, es hat zwar funktioniert allerdings kam trotzdem eine Fehlermeldung und hat mir den restlichen Code den ich hier im Macro habe durcheinander gebracht. 

Daher muss ich die UFs jetzt doch beim erstellen der Mappe importieren. Hier bekomme ich allerdings diese Fehlermeldung.

Ich habe es auch schon so probiert, dass erst beim Klick auf den Button die UF importiert wird. Allerdings erhalte ich auch mit dieser Variante diese Fehlermeldung.
Top
#4
**Update:**

Mappe1 zeigt die Maschinen die ein Kunde bestellt hat. Für jede Maschine wird ein Sheet erstellt. Wenn ich nur eine Maschine habe, also ein Sheet, dann funktioniert in Mappe 2 alles einwandfrei. Habe ich aber mehr als eine Maschine, dann bekomme ich diesen Fehler.

D.h. bei einer bestellten Maschine wird in Mappe2 nur ein Sheet erstellt. Wenn es zwei Maschinen sind werden zwei Sheets erstellt, usw.

Die Sheets sind alle gleich aufgebaut. Die UserFormen haben folgenden Namen:

Sheet1:
Assignment_WKA1_1 (Erste UF)
Assignment:WKA1_2 (Zweite UF)

Sheet2:
Assignment_WKA2_1
Assignment_WKA2_2

Sheet3_
Assignment_WKA3_1
Assignment_WKA3_2

Hoffe mit dieser Info kann mir vllt. jemand doch noch helfen.
Top
#5
** Update2:**

Auch wenn ich den Teil mir [UserForm1].Show änder. Zum Beispiel zu MsgBox "Test" bekomme ich ebenfalls diesen Fehler.

Ich hoffe jmnd kann mir helfen.
Top
#6
Hallo,

hab jetzt nur mit Button1 und MsgBox gestestet: funktioniert.

Unabhängig davon: Ein Option Explicit in der ersten Zeile würde nicht schaden. Wink

Gruß Uwe
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste