PDA

Vollständige Version anzeigen : ListView - Objekt nicht gefunden


krixxie
23.04.2009, 08:16
Hallo Zusammen,

ich hab da mal wieder ein Problem...

Ich verwende in einer Excel-Datei ein ListView Objekt. Nun läuft das bei mir alles prima, aber sobald ich die Datei von einem anderen Rechner öffne, sagt es mir "Ein Objekt konnte nicht geladen werden, da es auf diesem Computer nicht verfügbar ist.", jedoch ist das Listview Objekt auf dem Rechner installiert wie auch registriert. Wenn ich dann die Userform auf dem Rechner öffne, ist das ListView natürlich nicht zu sehen. Jedoch kann ich im VB-Editor gleich ein neues reinsetzen ... ?!
Kann man diesen Fehler irgendwie umgehen, liegt es an verschiedenen Versionen des Controls?

Ich hatte dann die Idee, das Listview-Objekt einfach während der Laufzeit zu erstellen und zu setzen... jedoch ist mir nicht ganz klar, wie das geht :/
Ich habe auf vbarchiv.net (vbarchiv link (http://www.vbarchiv.net/api/details.php?id=initcommoncontrolsex)) eine schöne Anleitung gefunden, jedoch bekomm ichs einfach nicht zum laufen :( (was vielleicht auch daran liegen kann, dass es in VBA nicht möglich ist... *augenroll*).

Kennt jemand die Problematik oder kann mir auch so weiterhelfen?

Danke für alles,
Liebe Grüsse

Nepumuk
23.04.2009, 09:04
Hallo,

du benötigst den Verweis auf die "Microsoft Windows Common Controls 6,0 (SP6)". Damit sucht sich das Control die benötigte OCX selbst.

krixxie
23.04.2009, 09:37
Hallo Nepumuk,

wie immer kannst du mir helfen :D
Weisst du auch, wann ich den Verweis setzen muss??
Ich habe es jetzt versucht in einer Funktion zu setzen, bevor ich die erste Form anzeige (Workbook_Open), jedoch klappt das nicht so wie gewünscht.

Wenn die Fehlermeldung gekommen ist und die Form ohne der Listview angezeigt wurde, brech ich ab und schau in den Verweisen nach. Dort ist auch der Verweis gesetzt, jedoch wenn ich dann im Editor die Userform öffne kommt die selbe Fehlermeldung noch einmal und die Listview wird nicht angezeigt? :/
Hast du eine Idee ?

Dank dir


*edit*
Hu nochmals,
weisst du zufällig wie der Prog-ID Wert vom Listview ist? Textbox und co lautet ja so: Forms.Textbox.1 ... nur find ich den korrekten Wert fürs Listview nicht :/

Danke nochmals ;-)


*editedit*
Hu Nochmals!!
ICH HAB ES.. .zumindest das mit der Laufzeit Erstellung ;D


Dim abc As MSComctlLib.ListView

Private Sub userform_initialize()


Set abc = UserForm1.Controls.Add("MSComctlLib.ListViewCtrl")
With abc
.Name = "lvw"
.Top = 10
.Left = 10
.Width = 400
.Height = 100
End With
End Sub

Liebe Grüsse

Nepumuk
23.04.2009, 12:26
Hallo,

der Verweis wird doch automatisch erstellt, wenn du das Control manuell einfügst. Ich hab in einer Mappe eine Listview, ein Treeview und eine Imagelist. Die Mappe läuft ohne Probleme unter Windows 2000, XP und Vista. In Excel 2000, 2002, 2003 und 2007.

krixxie
23.04.2009, 14:01
Hi,

naja, ich füge ja die (der, oder das) ListView einmal in die Mappe ein und kopiere die Mappe als Ganzes (.xls) auf einen anderen PC. Dort erscheint dann eben die Meldung, dass es das Objekt nicht gibt. Wenn ich aber eine neue Mappe öffne und ein ListView manuell erstelle, gibts auf dem selben Rechner keine Probleme.... das ist ja das komische :/

Jetzt wollte ich das Problem umgehen, in dem ich das Listview jedes mal während der Laufzeit erstelle, jedoch macht er mir nun in meiner eigentlichen Umgebung Probleme... Der obene Code funktioniert in einer leeren Mappe, wenn ich ihn jedoch in meine eigentliche Umgebung einfüge, sagt er mir bei der Anweisung .name= "lvw" "Methode oder Datenobjekt nicht gefunden" .. ich werde noch wahnsinnig :/

*edit*
jetzt hatte ich ein interessantes Erlebnis.
Ich habe meine eigentliche Umgebung geöffnet, habs mehrmals versucht mit der oben genannten Fehlermeldung als Ergebnis. Nun habe ich in die Userform manuell ein ListView erstellt, habe dieses wieder gelöscht und den Code nochmal durchlaufen lassen und plötzlich ging es ohne Probleme !? Dubios ist auch, dass kein anderer oder weiterer Verweis erstellt wurde, als schon vorhanden ?!
VB(A) - ein grosses Rätsel für mich :/

stacked
22.09.2009, 15:17
Auch wenns wahrscheinlich schon zu spät ist.

Es müsste heißen

dim abc as Object

sonst ist es ja keine late binding, oder sehe ich das falsch ???

LG