Moduli di classe in estensioni personalizzate

chiesto il 2020-05-21 11:43:40 +0200

Immagine gravatar per Tonky

Buongiorno a tutti, ho il seguente problema:

  1. Ho scritto una piccola libreria per una estensione personale all'interno della quale ho realizzato un modulo di classe
  2. Ho un documento con delle macro; su tali macro viene caricata la libreria che ho realizzato al punto 1
  3. 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
modifica retag flag offensive close merge delete