Access形式データベースへの接続(1)OLEDBプロバイダー
概要
データベースへ接続するための事前準備として、利用可能なOLEDBプロバイダーを確認する。
OLEDBプロバイダーを確認する
PowerShellを起動して以下のコマンドを実行する。
(New-Object data.oledb.oledbenumerator).getElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
64bit版のOLEDBが表示される。必要な行だけ示す。
SOURCES_NAME SOURCES_DESCRIPTION
------------ -------------------
Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider
Microsoft.ACE.OLEDB.16.0 Microsoft Office 16.0 Access Database Engine OLE DB Provider
つぎに32bit版PowerShellを起動して同じコマンドを実行する。32bit版PowerShellはC:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
にある。
32bit版のOLEDBが表示される. 必要な行だけ示す。
SOURCES_NAME SOURCES_DESCRIPTION
------------ -------------------
Microsoft.Jet.OLEDB.4.0 Microsoft Jet 4.0 OLE DB Provider
以上から自分の環境では
- 64bit版の
Microsoft.ACE.OLEDB.12.0
- 64bit版の
Microsoft.ACE.OLEDB.16.0
- 32bit版の
Microsoft.Jet.OLEDB.4.0
が利用できることが分かる。
VBScriptを動かしているWSHにも32bit版と64bit版がある。
64bit版WindowsではスクリプトをWクリックしたとき、とくに設定を変えてなければ64bit版が起動する。
作業フォルダにtest.vbs
があるとして、ターミナルから以下のように実行したときも64bit版が起動する。
C:\Windows\System32\wscript.exe .\test.vbs
以下のように実行したときは32bit版が起動する。
C:\Windows\SysWOW64\wscript.exe .\test.vbs
32bit版を起動するのにコマンドを打つのが面倒な場合は、下記のスクリプトにドラッグ&ドロップすると良い。
'このスクリプトファイルにドラッグ&ドロップしたスクリプトファイルを32bit版のWSHで実行する
Dim shell, path
'1ファイルをドラッグ&ドロップしたとき以外は終了
If WScript.Arguments.Count <> 1 Then WScript.Quit
'ドラッグ&ドロップしたスクリプトファイルのパス
path = WScript.Arguments(0)
'WshShellオブジェクト
Set shell = CreateObject("WScript.Shell")
'作業フォルダとしてpathの親フォルダを指定
shell.CurrentDirectory = CreateObject("Scripting.FileSystemObject").GetParentFolderName(path)
'32bit版WSHでスクリプトを実行する
shell.Run "C:\windows\SysWOW64\wscript.exe """ & path & """"