Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VBA] COM object gebruik events

Pagina: 1
Acties:

  • Ghost-X
  • Registratie: Mei 2002
  • Laatst online: 22-11 17:16
Hallo allen,

Ik wil graag gebruik maken van een COM-object in excel vba. Dit object heb ik via references gekoppeld, als ik me niet vergis heet dit early binding(nee ik ben inderdaar geen pro op dit gebied). Daarna heb ik een userform aangemaakt met de volgende code.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Option Explicit
Private ProSim As S7PROSIMLib.S7Prosim

Private Sub UserForm_Initialize()
Set ProSim = New S7PROSIMLib.S7Prosim
End Sub

Private Sub UserForm_Terminate()
ProSim.disconnect
Set ProSim = Nothing
End Sub


Op het userform zitten een aantal buttons die functies gebruiken vanuit het com-object. Tot zover werkt alles prima zonder problemen en kan ik alle functies gebruiken. Maar in het com object zitten ook een aantal events welke ik wil gebruiken, om dit te doen heb ik het volgende aangepast.

Visual Basic:
1
2
Option Explicit
Private WithEvents ProSim As S7PROSIMLib.S7Prosim


Nu worden in de VBA editor de aanwezige events zichtbaar (via dropdown menu) en kan ik deze gebruiken. Maar na het gebruiken van een van de functies krijg ik de volgende melding:
Systeemfout &H80010108(-2147417848). The object invoked has disconnected from its clients.

Na wat googlen kwam ik op: INFO: Error or Unexpected Behavior with Office Automation When You Use Early Binding in Visual Basic maar kan hier niet veel mee. is er iemand die mij in Jip & Janneke taal kan vertellen wat ik fout doe.

Vast dank...

The one you cant see...


Verwijderd

Voor wat ik ervan begrijp doet dit zich alleen voor bij gebruik van early binding. Krijg je deze foutmelding ook wanneer je late binding gebruikt?

  • Ghost-X
  • Registratie: Mei 2002
  • Laatst online: 22-11 17:16
Verwijderd schreef op woensdag 20 april 2011 @ 13:01:
Voor wat ik ervan begrijp doet dit zich alleen voor bij gebruik van early binding. Krijg je deze foutmelding ook wanneer je late binding gebruikt?
ja zoiets begreep ik ook alleen geen idee hoe dat te implementeren inclusief events etc... O-), zie genoeg voorbeelden maar hoe te koppelen aan de DLL die ik gebruik vindt ik niet zo snel terug. Ik zal vast zoeken met de verkeerde termen..

[ Voor 21% gewijzigd door Ghost-X op 20-04-2011 13:24 ]

The one you cant see...


  • Ghost-X
  • Registratie: Mei 2002
  • Laatst online: 22-11 17:16
En daarbij begreep ik dat Late Binding en events niet samen gaan, las ik ergens dus neem ik dat direct voor waarheid aan :X

The one you cant see...


Verwijderd

Mijn boerenverstand zegt me dat dat ergens nogal voor de hand ligt, maar de eerlijkheid gebiedt me wel te zeggen dat ik er niet genoeg verstand van heb om dat technisch te kunnen uitleggen.

Hier nog wel een mogelijke workaround, al wordt er wel bij vermeld dat het niet aan te raden is.

  • Ghost-X
  • Registratie: Mei 2002
  • Laatst online: 22-11 17:16
Hou hetzelfde probleem, zodra ik events gebruik krijg ik de foutmelding,,,, :|

The one you cant see...


Verwijderd

nu heb je de variabele gedeclareerd in de userform, wat waarschijnlijk scopingproblemen oplevert.
probeer het eens uit in een aparte gebeurtenisafhandelingsklasse :
gewone module invoegen met volgende code
Visual Basic:
1
2
Option Explicit
Public STEP7Inst As STEP7

klassemodule invoegen : STEP7
Visual Basic:
1
2
3
4
5
6
7
8
9
Option Explicit
Public ProSim As S7PROSIMLib.S7Prosim
Public MyUserform as userform1'of ev. ... as object

'jou eventhandlingcode & functies die nu in de userform staan:
private sub Prosim_AnEventHandler()
 'code
 myuserform.mijntekstbox.text="Step7 gebeurtenis afgehandeld"
end sub


deze gebeurtenisklasse instantieer je vervolgens in de userform:
Visual Basic:
1
2
3
4
5
6
7
Option Explicit
'...
Private Sub UserForm_Initialize()
 Set STEP7Inst = New STEP7
 set STEP7Inst.Prosim=S7PROSIMLib.S7Prosim
 set STEP7Inst.myuserform=me'toegang tot controls mogelijk maken in de klassemodule
End Sub

  • Ghost-X
  • Registratie: Mei 2002
  • Laatst online: 22-11 17:16
Helaas, heb je code geprobeerd maar dezelfde foutmelding blijft komen zodra ik Prosim definieer icm WithEvents......

The one you cant see...

Pagina: 1