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

Umstellung EarlyBinding -> LateBinding

Umstellung EarlyBinding -> LateBinding
Gerd
Hallo,
ich versuche eine Function von Early Binding auf Late Binding umzustellen, da die Application, auf die Excel hier zur Laufzeit zugreift nicht auf allen Rechner vorhanden ist, an die die Mappe verteilt wird.
Im Early Binding Modus läuft alles ohne Probleme, die Code Variante Late Bindung führt zum Fehler
"Objekterstellung duch ActiveX Komponente nicht möglich".
Was könnte ich hier falsch machen oder nicht beachtet haben ?
Ich habe:
1. Die Deklaration der Variablen als Objekt vorgenommen
2. per Create Object das Object definiert
3. den Verweis deaktiviert
so sieht es mit beiden Varianten aus:
    On Error GoTo Errorhandling
'Referenz auf die Sitzungsstruktur der aktuellen Applikation holen
'Early Binding Modus
'Dim App As New ProfessionalPlanner.Application
'Dim PPTree As PPOrganizationTree.PPOrganizationTree
'Set PPTree = App.GetSessionTree
'ENDE Early Binding Modus
'Late Binding Modus
Dim App As Object
Dim PPTree As Object
Set App = CreateObject("ProfessionalPlanner.Application")
Set PPTree = CreateObject("PPOrganizationTree.PPOrganizationTree")
Set PPTree = App.GetSessionTree
'ENDE Late Binding Modus

Ich freue mich über jede Idee,
Gerd
AW: Umstellung EarlyBinding -> LateBinding
17.12.2011 17:41:28
Nepumuk
Hallo,
soll ich raten in welcher Zeile?
Da:
Set PPTree = CreateObject("PPOrganizationTree.PPOrganizationTree")
Das ist eine Variable und kein ActiveX-Objekt also:
Dim PPTree As Object
Gruß
Nepumuk
AW: Umstellung EarlyBinding -> LateBinding
17.12.2011 19:13:17
Jürgen
Hallo Gerd,
so wie Nepumuk rate ich mal, dass Du den Fehler in der Zeile "Set PPTree = CreateObject("PPOrganizationTree.PPOrganizationTree")" erhältst. Lasse sie einfach weg, sie ist überflüssig.
Gruß, Jürgen
AW: Umstellung EarlyBinding -> LateBinding
17.12.2011 20:55:20
Gerd
Hallo Nepumuk und Jürgen,
ich habe es grad probiert, aber es klappt noch nicht.
Der Fehler kommt schon in der Zeile

Set App = CreateObject("ProfessionalPlanner.Application")
Woran könnte das liegen ?
viele Grüße,
Gerd
Anzeige
AW: Umstellung EarlyBinding -> LateBinding
17.12.2011 21:01:34
Nepumuk
Hallo,
such mal in der Registry wie die genaue ProgId für diese Anwendung lautet.
Gruß
Nepumuk
AW: Umstellung EarlyBinding -> LateBinding
17.12.2011 21:07:20
Gerd
Hallo Nepumuk,
ich finde da keine ProgId. Ich habe unter HKEY_Local_Maschine\software gesucht.
Kann eine ProgID auch woanders definiert sein ?
viele Grüße,
Gerd
AW: Umstellung EarlyBinding -> LateBinding
17.12.2011 21:22:30
Gerd
Ich habe jetzt noch geschaut, was in der Registry bei den Dateitypen dieses Programmes definert ist. Dort gibt es einen Schlüssel "OpenWithProgIds" mit dem Inhalt "PPTabSrv.dokument".... kann das ein Hinweis sein ?
viele Grüße,
Gerd
AW: Umstellung EarlyBinding -> LateBinding
17.12.2011 21:35:19
Gerd
Noch ein Versuch, könnte die ProgID hier zu finden sein ?
https://www.herber.de/bbs/user/78027.xlsx
Anzeige
AW: Umstellung EarlyBinding -> LateBinding
17.12.2011 21:50:16
Nepumuk
Hallo,
hast du nach "ProfessionalPlanner" gesucht?
Gruß
Nepumuk
AW: Umstellung EarlyBinding -> LateBinding
17.12.2011 21:54:51
Gerd
Ja, habe ich gemacht, aber keine Eintrag etc gefunden der "ProgId" heißt.
In der xls Datei ist ein Screenshot, kann der Eintrag dort mit stehen ?
viele Grüße,
Gerd
AW: Umstellung EarlyBinding -> LateBinding
17.12.2011 21:56:30
Nepumuk
Hallo,
die haben neben einem Forum auch ein Referenzhandbuch online.
http://competence.winterheller.prevero.com/index.php?title=Kategorie:Server-_und_Client-Objekte&until=GetIsOnline-Funktion
Und unter Application finde ich das:
Erzeugen eines Application-Objektes:
Dim Application As New ProfessionalPlanner.Application
oder
Set Application= CreateObject("PP.Application")

Gruß
Nepumuk
Anzeige
AW: Umstellung EarlyBinding -> LateBinding
17.12.2011 22:11:25
Gerd
Hallo Nepumuk,
sorry, auf die Idee dort mal zu schauen bin ich leider nicht gekommen.
Vielen Dank für Deine Hilfe !!
Gerd
AW: Umstellung EarlyBinding -> LateBinding
18.12.2011 14:23:32
Gerd
Hallo Nepumuk,
ich habe jetzt weiter alles durchprobiert und es klappt es gut - vielen Dank noch mal.
Ein Folgeproblem habe ich noch. Ich möchte eines meiner Objekte an eine Prozedur zur Bearbeitung geben und dann weiterverwenden.
Bisher tat ich das mit
Prozedur (ByRef ValueObjekt as PPDB.Values)
jetzt tue ich es mit

Prozedur (ByRef ValueObjekt As Object)
und es funktioniert nicht mehr. Muss man evtl. an die Unterprozedur dann noch mehr übergeben, oder dort noch etwas erzeugen ?
viele Grüße,
Gerd
Anzeige
AW: Umstellung EarlyBinding -> LateBinding
18.12.2011 14:30:13
Nepumuk
Hallo,
PPDB.Values ist eine Eigenschaft einer Klasse. Was machst du damit in der Prozedur? Schau dir das ganze mal im Lokalfenster an. Ich habe das Programm nicht und kenne daher auch die Klasse und deren Eigenschaften inklusive deren Deklaration nicht.
Gruß
Nepumuk
AW: Umstellung EarlyBinding -> LateBinding
18.12.2011 14:43:55
Gerd
Danke für Deine schnelle Antwort - Tut mir leid, ich habe noch meine Problem mit Klasse / Objekt. Das Values "Object" ist soetwas wie ein Datenarray.
Ich habe testweise in meiner Hauptprozedur mein Objekt mit
            'LateBinding Version
Dim ValuesPP As Object
Set ValuesPP = CreateObject("PPDB.Values")
'ENDE LateBinding Version
erzeugt und dann mit der Methode

ValuesPP.AddValue(1,1,3, 0, 0, 55)
Werte hineingeschrieben. Das funktioniert prima.
Jetzt wollte ich das hineinschreiben der Werte von einer Unterprozedur erledigen lassen, da viele Schleifen nötig sind und habe dafür das "Object" ValuesPP übergeben wollen - ich wüsste nicht was ich sonst übergeben könnte.
Ich weiß, ohne das konkrete Programm ist es nicht so richtig möglich das nachzuprüfen.
viele Grüße,
Gerd
Anzeige
AW: Umstellung EarlyBinding -> LateBinding
18.12.2011 14:50:45
Nepumuk
Hallo,
wie rufst du die Funktion denn auf?
Gruß
Nepumuk
AW: Umstellung EarlyBinding -> LateBinding
18.12.2011 15:28:11
Gerd
Hallo Nepumuk,
Aktuell so (funktioniert nicht):
Sub Wertreihe_in_ValueObjekt_eintragen(ByRef ValueObjekt As Object)
End Sub

Früher so (hat funktioniert):
Sub Wertreihe_in_ValueObjekt_eintragen(ByRef ValueObjekt As PPDB.Values)
End Sub
Viele Grüße,
Gerd
AW: Umstellung EarlyBinding -> LateBinding
18.12.2011 15:59:57
Gerd
Hallo Nepumuk,
ich bin der Lösung näher gekommen :-) Die Übergabe so wie ich sie mache scheint richtig zu sein,
man muss jetzt scheinbar nur alle alle Wert explizit casten die man der Funktion .AddValues übergibt.
Erstaunt aber erfreut,
Gerd
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige