Excel VBA et dll Com VB.net:passage d objet en parametre
Bonjour,
En ce moment je suis en train d implemeter un librairie COM avec VB.net ( VS2008) pour l'utiliser grace a du code VBA dans EXCEL 2003.
Cependant je suis confronte a de sacre probleme dans mon code VBA : je n arrive pas a envoyer des objets crees dans mon VBA vers ma libraire COM. Pour faire simple.
En VBA, Je cree une instance A_inst d une classe A_class de la librarie avec les donnes de la spreadsheet et qd j utilise A_inst lors la creation d une objet de la class B_class venant de ma librairie com, je me retrouve avec une erreur :
Run-time error '438'
Object doesn't support this property or method
Je donne le code VBA et VB.Net ci joint :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
'Code VBA
Private Sub init()
Dim SubPV as ComLibrary.SubPV
Set SubPV = New ComLibrary.SubPV
Dim LoObject As ComLibrary.Lo
Set LoObject = New ComLibrary.Lo
'Erreur 438 ici ..
SubPV.addAsset (LoObject )
End Sub |
et le code VB.net correspondant dans la lib com
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
Option Explicit On
'System
'Imports Microsoft.Office.Interop.Excel
Imports System
Imports System.Runtime.InteropServices
Imports System.Collections
Imports System.Collections.Generic
<ComClass(SubPV.ClassId, SubPV.InterfaceId, SubPV.EventsId)> _
Public Class SubPV
Implements ICloneable
public _lportfolio As List(Of Lo)
Public Sub addAsset(ByVal elt As ComLibrary.Lo)
_lportfolio.Add(elt)
End Sub
End Class |
J ai meme essaye d exporter un objet spreadsheet ( la feuille excel active) dans la libraire pour faire toutes les creations d instance et le traitement a l interieur pour miniser l utilisation de VBA mais je me retrouve avec type mismatch alors que j importe un object worksheets...
J ai l impression que VBA et VB.net COM lib ont du mal a communiquer sur le type des objets : Sur un meme objet chaque a un type different ...
pour un objet workbook ou worksheet ca devrait etre le meme et le passage en parametre d un tel objet devrait bien se faire. Pourtant dans mon code, c est pas le cas...
Je commence a perdre mon latin :(
Quelqu un aurait-il une idee sur ce probleme ?
Merci d avance
bsm