Domanda su CreateObject () in VB6 / VBA
-
19-08-2019 - |
Domanda
Posso farlo:
Dim fso As New FileSystemObject
oppure posso farlo:
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Come faccio a sapere quale stringa utilizzare per CreateObject? Ad esempio, come faccio a sapere se utilizzare lo scripting " ;. " parte di " Scripting.FileSystemObject " ;? Dove vai a cercarlo?
Soluzione
È il ProgID del componente che è registrato nel registro di Windows con la chiave HKCR:
HKEY_CLASSES_ROOT\Scripting.FileSystemObject
I ProgID sono identificatori leggibili per gli oggetti COM. Indicano i CLSID effettivi, che in questo caso sono:
HKEY_CLASSES_ROOT\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}
Questo è il luogo in cui è possibile trovare l'attuale COM dll che include l'implementazione del componente.
Nel primo codice di esempio che hai fornito stai eseguendo un'associazione anticipata e nel secondo esegui un'associazione tardiva.
Altri suggerimenti
Utilizzando l'IDE VB6, selezionare Progetto, Riferimenti, quindi selezionare il riferimento "Microsoft Scripting Runtime".
Se non si conosceva il nome del riferimento, è possibile utilizzare il pulsante Sfoglia della finestra di dialogo Riferimenti per selezionare il file / sistema 32 / scrrun.dll.
Con il riferimento scelto, chiudere la finestra di dialogo Riferimenti quindi aprire il Browser degli oggetti (menu Visualizza). Cambia il menu a discesa con il candidato più probabile, essendo "Scripting". Questo rivelerà le classi della libreria, una delle quali è 'FileSystemObject'. Quindi, avrai scoperto che la stringa richiesta per CreateObject è "Scripting.FileSystemObject".
Se non si conosceva il nome di riferimento o il nome del file ma si conosceva il nome della classe, è possibile cercare nel registro " FileSystemObject " e presto dovrebbe essere rivelato che il nome completo richiesto è "Scripting.FileSystemObject".
Vorrei iniziare cercando FileSystemObject nella libreria MSDN all'indirizzo http://msdn.microsoft.com/library
Il sito è pieno zeppo di documentazione, inclusi i dettagli su come chiamare CreateObject.