2008-12-05 13 views
11

mogę to zrobić:Pytanie o CreateObject() w VB6/VBA

Dim fso As New FileSystemObject 

czy mogę to zrobić:

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

Skąd mam wiedzieć, co ciąg użyć do CreateObject? Na przykład, skąd mam wiedzieć, aby użyć "Skrypty". część "Scripting.FileSystemObject"? Gdzie idziesz, żeby to sprawdzić?

Odpowiedz

20

To ProgID składnika, który jest zarejestrowany w rejestrze systemu Windows pod klucz HKCR:

HKEY_CLASSES_ROOT\Scripting.FileSystemObject 

PROGID są czytelne dla człowieka identyfikatorów obiektów COM. Wskazują one na rzeczywiste CLSID, który w tym przypadku wynosi:

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

To jest miejsce, gdzie można znaleźć rzeczywiste .dll COM, który obejmuje realizację komponentu.

W pierwszym przykładowym kodzie, który podałeś, robisz wczesne wiązanie, a w drugim robisz późniejsze wiązanie.

1

Chciałbym zacząć od poszukiwania FileSystemObject w bibliotece MSDN w http://msdn.microsoft.com/library

witryny jest klin pełne dokumentacji, w tym szczegóły jak zadzwonić CreateObject.

2

Korzystając z IDE VB6, wybierz Projekt, Referencje, a następnie wybierz odnośnik "Microsoft Scripting Runtime".

Jeśli nie wiesz, jak się nazywa, możesz użyć przycisku Przeglądaj w oknie dialogowym, aby wybrać plik/system 32/scrrun.dll.

Po wybraniu odnośnika zamknij okno dialogowe Odniesienia, a następnie otwórz Przeglądarkę obiektów (menu Widok). Zmień listę najbardziej prawdopodobnego kandydata na "Skrypty". To ujawni klasy biblioteki, z których jedną jest "FileSystemObject". W ten sposób odkryjesz, że wymagany ciąg dla CreateObject to "Scripting.FileSystemObject".

Jeśli nie znasz nazwy lub nazwy pliku referencyjnego, ale znasz nazwę klasy, możesz przeszukać rejestr "FileSystemObject", a wkrótce okaże się, że wymagane jest w pełni kwalifikowane nazwisko " Scripting.FileSystemObject ".