VB6 / VBAのCreateObject()に関する質問
-
19-08-2019 - |
質問
これを行うことができます:
Dim fso As New FileSystemObject
またはこれを行うことができます:
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
CreateObjectに使用する文字列を知るにはどうすればよいですか?たとえば、<!> quot; Scripting。<!> quot; <!> quot; Scripting.FileSystemObject <!> quot ;?どこで調べますか?
解決
それは、HKCRキーの下でWindowsレジストリに登録されているコンポーネントの ProgID です。
HKEY_CLASSES_ROOT\Scripting.FileSystemObject
ProgIDは、人間が読めるCOMオブジェクトの識別子です。実際のCLSIDを指します。この場合は次のとおりです。
HKEY_CLASSES_ROOT\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}
これは、コンポーネントの実装を含む実際のCOM .dllを見つけることができる場所です。
最初に提供したサンプルコードでは事前バインディングを実行し、2番目のサンプルコードでは遅延バインディングを実行しています。
他のヒント
VB6 IDEを使用して、プロジェクト、参照を選択し、参照「Microsoft Scripting Runtime」を選択します。
参照の名前がわからない場合は、[参照]ダイアログの[参照]ボタンを使用して、/ system 32 / scrrun.dllファイルを選択できます。
参照を選択した状態で、[参照]ダイアログを閉じてから、[オブジェクトブラウザー]([表示]メニュー)を開きます。ドロップダウンを最も可能性の高い候補(「スクリプト」)に変更します。これにより、ライブラリのクラスが表示されます。そのクラスの1つは「FileSystemObject」です。したがって、CreateObjectに必要な文字列は 'Scripting.FileSystemObject'であることがわかります。
参照名またはファイル名は知らないが、クラス名は知っている場合は、レジストリで<!> quot; FileSystemObject <!> quot;を検索できます。すぐに、必要な完全修飾名が「Scripting.FileSystemObject」であることが明らかになります。
まず、MSDNライブラリの http://msdn.microsoft.com/libraryでFileSystemObjectを検索します。
このサイトには、CreateObjectの呼び出し方法の詳細など、ドキュメントがぎっしり詰まっています。