dict array vba vb6 late-binding createobject

array - dict vba



Pregunta sobre CreateObject() en VB6/VBA (3)

Puedo hacer esto:

Dim fso As New FileSystemObject

o puedo hacer esto:

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

¿Cómo sé qué cadena usar para CreateObject? Por ejemplo, cómo sabría usar el "Scripting". parte de "Scripting.FileSystemObject"? ¿A dónde vas a buscar eso?


Comenzaría buscando FileSystemObject en la biblioteca de MSDN en http://msdn.microsoft.com/library

El sitio está repleto de documentación, incluidos los detalles sobre cómo llamar a CreateObject.


Usando el IDE VB6, elija Proyecto, Referencias, luego elija la referencia ''Microsoft Scripting Runtime''.

Si no sabía cómo se llama la referencia, podría usar el botón Examinar del diálogo Referencias para seleccionar el archivo / system 32 / scrrun.dll.

Con la referencia elegida, cierre el cuadro de diálogo Referencias y luego abra el Examinador de objetos (menú Ver). Cambie el menú desplegable al candidato más probable, siendo ''Scripting''. Esto revelará las clases de la biblioteca, una de las cuales es ''FileSystemObject''. Por lo tanto, habrá descubierto que la cadena requerida para CreateObject es ''Scripting.FileSystemObject''.

Si no conocía el nombre de referencia o el nombre del archivo, pero sí conocía el nombre de la clase, podría buscar en el registro "FileSystemObject" y pronto debería revelarse que el nombre completo que necesita es ''Scripting.FileSystemObject''. .


Es el ProgID del componente que está registrado en el registro de Windows bajo la clave HKCR:

HKEY_CLASSES_ROOT/Scripting.FileSystemObject

Los ProgID son identificadores legibles por humanos para objetos COM. Señalan a los CLSID reales, que en este caso es:

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

Este es el lugar donde puede encontrar el COM .dll COM que incluye la implementación del componente.

En el primer código de muestra que ha proporcionado, está realizando una vinculación anticipada y, en el segundo, está realizando una vinculación tardía.