Buongiorno a tutti,
ho il seguente problema:
- Ho scritto una piccola libreria per una estensione personale all’interno della quale ho realizzato un modulo di classe
- Ho un documento con delle macro; su tali macro viene caricata la libreria che ho realizzato al punto 1
- Non riesco ad istanziare il modulo di classe che è contenuto nella libreria.
NOTA - Se tento di fare l’istanza della classe da una funzione in un altro modulo generico, sempre sotto la libreria personale allora la classe funziona; inoltre se sposto il mio modulo di classe direttamente all’interno del mio documento il tutto funziona.
Qui a seguire il codice del modulo di classe presente all’interno della mia libreria personale:
Option Explicit
Option Compatible
Option ClassModule
' Optional members go here
Private _Cognome as String
Private _Nome as String
'***************** COSTRUTTORE/DISTRUTTORE ******************
' Constructor
Private Sub Class_Initialize()
_Cognome = ""
_Nome = ""
End Sub
' Destructor
Private Sub Class_Terminate()
End Sub
' Distruttore Esplicito
Public Sub Dispose()
Call Class_Terminate()
End Sub
'************************ PROPRIETA' ************************
Public Property Let Cognome(value as string)
_Cognome = Ucase(Trim(value))
End Property
Public Property Get Cognome() as String
Cognome = _Cognome
End Property
Public Property Let Nome(value as String)
_Nome = Ucase(Trim(value))
End Property
Public Property Get Nome() as String
Nome = _Nome
End Property
'************************ Metodi ************************
Public Function NomeIntero() as String
NomeIntero = _Nome & " " & _Cognome
End Function
Mentre invece qui il codice di esempio presente all’interno del mio documento:
Option Explicit
Sub Main
'dim oLibTonky as Object
dim oTest as Object
dim oTest2 as Object
dim myLibrary as Object
'"Persona" è lo stesso modulo di classe soltanto messo
'direttamente nel documento, mentre invece "objPersona"
'è la stessa classe messa nella mia libreria.
oTest2 = new Persona
oTest2.Nome = "Antonio"
oTest2.Cognome = "Rossi"
Print oTest2.NomeIntero()
If GlobalScope.BasicLibraries.hasByName("TonkyUtility") Then
'oLibTonky = GlobalScope.BasicLibraries.getByName("TonkyUtility")
'MsgBox oLibTonky.getByName("objPersona"), 0, "objPersona - Sorgente"
GlobalScope.BasicLibraries.LoadLibrary("TonkyUtility")
Set oTest = Nothing
Set oTest = new objPersona '==> QUI GENERA ERRORE
print oTest.Nome
oTest.Nome = "Antonio"
oTest.Cognome = "Rossi"
Print oTest.NomeIntero()
Else
MsgBox "Library 'TonkyUtility' does not exist"
End If
End Sub
Public Sub Test01()
dim strTMP as String
strTMP = "Test "
Print strTMP
If GlobalScope.BasicLibraries.hasByName("Tools") Then
GlobalScope.BasicLibraries.LoadLibrary("Tools")
strTMP = RTrimStr(strTMP, " ")
Print strTMP
End if
End Sub
Public Sub Test02()
dim strTMP as String
If GlobalScope.BasicLibraries.hasByName("TonkyUtility") Then
GlobalScope.BasicLibraries.LoadLibrary("TonkyUtility")
strTMP = "Mario"
Test_Prova(strTMP, strTMP)
Print strTMP
End if
End Sub
Public Sub Test03()
If GlobalScope.BasicLibraries.hasByName("TonkyUtility") Then
GlobalScope.BasicLibraries.LoadLibrary("TonkyUtility")
Call IstanziaPersona()
End if
End Sub