2008-12-05 14 views
11

posso fare questo:Domanda sul CreateObject() in VB6/VBA

Dim fso As New FileSystemObject 

o posso fare questo:

Dim fso As Object 
Set fso = CreateObject("Scripting.FileSystemObject") 

Come faccio a sapere cosa stringa da usare per CreateObject? Ad esempio, come faccio a sapere di usare "Scripting". parte di "Scripting.FileSystemObject"? Dove vai a cercare?

risposta

20

È la ProgID del componente che è registrato nel Registro di sistema di Windows sotto chiave HKCR:

HKEY_CLASSES_ROOT\Scripting.FileSystemObject 

ProgID sono identificatori leggibili per gli oggetti COM. Esse indicano i CLSID reali, che in questo caso è:

HKEY_CLASSES_ROOT\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228} 

Questo è il luogo dove si può trovare la DLL COM effettivo che include l'implementazione del componente.

Nel primo codice di esempio è stato fornito un binding anticipato, mentre nel secondo si sta eseguendo un binding posticipato.

1

Vorrei iniziare la ricerca di FileSystemObject in MSDN Library a http://msdn.microsoft.com/library

Il sito è pieno zeppo di documentazione, compresi i dettagli di come chiamare CreateObject.

2

Utilizzando l'IDE VB6, selezionare Progetto, Riferimenti, quindi selezionare il riferimento "Microsoft Scripting Runtime".

Se non si conosce 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 Visualizzatore oggetti (menu Visualizza). Cambia il menu a discesa nel candidato più probabile, in "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 dovrebbe essere presto rivelato che il nome completo richiesto è " Scripting.FileSystemObject'.