VBAでエクセル外のオブジェクトを使うときには、
参照設定でバインドする方法以外に、実行時にバインディングする方法があります。
その方法についての備忘録
参照設定でバインドする方法だと、エクセルのバージョンなどにより、参照するDictionaryのバージョンが異なります。このため、自分のPCでは参照できるが、他の人のPCでは参照できずエラーが出てしまうケースが発生してしまいます。
一方、実行時にバインディングする方法ではオブジェクトを直接バインドするため、こういったエラーは発生しません。
実行時にバインディングする方法
オブジェクトを作成する場合は、CreateObject を使用します。
Dim obj As Object Set obj = CreateObject(class)
class は、appname.objecttype の形式で指定します。具体的には、次のように記述します。
Dim obj As Object Set obj = CreateObject("ADODB.Connection")
ProgID(プログラムID)の例を次にあげておきます。
Set obj = CreateObject("BARCODE.BarCodeCtrl.1") Set obj = CreateObject("Access.Application") Set obj = CreateObject("ADODB.Connection") Set obj = CreateObject("ADODB.Recordset") Set obj = CreateObject("ADODB.Stream") Set obj = CreateObject("DAO.DBEngine.120") Set obj = CreateObject("Excel.Application") Set obj = CreateObject("RefEdit.Ctrl") Set obj = CreateObject("Outlook.Application") Set obj = CreateObject("PowerPoint.Application") Set obj = CreateObject("Word.Application") Set obj = CreateObject("Word.Document") Set obj = CreateObject("htmlfile") Set obj = CreateObject("InternetExplorer.Application") Set obj = CreateObject("Microsoft.XMLDom") Set obj = CreateObject("Microsoft.XMLHTTP") Set obj = CreateObject("MSXML2.DOMDocument") Set obj = CreateObject("MSXML2.XMLHTTP") Set obj = CreateObject("Forms.CheckBox.1") Set obj = CreateObject("Forms.ComboBox.1") Set obj = CreateObject("Forms.CommandButton.1") Set obj = CreateObject("Forms.Image.1") Set obj = CreateObject("Forms.Label.1") Set obj = CreateObject("Forms.ListBox.1") Set obj = CreateObject("Forms.MultiPage.1") Set obj = CreateObject("Forms.OptionButton.1") Set obj = CreateObject("Forms.ScrollBar.1") Set obj = CreateObject("Forms.SpinButton.1") Set obj = CreateObject("Forms.TabStrip.1") Set obj = CreateObject("Forms.TextBox.1") Set obj = CreateObject("Forms.ToggleButton.1") Set obj = CreateObject("MSComctlLib.ListViewCtrl") Set obj = CreateObject("MSComctlLib.TreeCtrl") Set obj = CreateObject("Scriptlet.TypeLib") Set obj = CreateObject("CDO.Message") Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") Set obj = CreateObject("InkEd.InkEdit.1") Set obj = CreateObject("Scripting.Dictionary") Set obj = CreateObject("Scripting.FileSystemObject") Set obj = CreateObject("Shell.Application") Set obj = CreateObject("MSInkaut.InkPicture.1") Set obj = CreateObject("VBScript.RegExp") Set obj = CreateObject("Wia.ImageFile") Set obj = CreateObject("WbemScripting.SWbemLocator") Set obj = CreateObject("WScript.Shell") Set obj = CreateObject("WScript.Network") Set obj = CreateObject("new:{6BF52A52-394A-11d3-B153-00C04F79FAA6}")