LoginSignup
1
0

More than 1 year has passed since last update.

Windows10 Access 2010 Later VBScript で DBEgine.Dao.120 を使用するときはAccess 2016 or Access2010再頒布コンポーネントをインストールする必要がある

Last updated at Posted at 2019-08-27

重要なお知らせ

Access 2016以降については
Microsoft Access データベース エンジン 2016 再頒布可能コンポーネント
https://www.microsoft.com/ja-JP/download/details.aspx?id=54920
当初は英語版のみでしたが、現在は日本語があります。
使用しているOfficeのバージョンにしたがってインストールします。
Access 2010のように両方入れる必要はないようです。
またSQL ServerからAccessなしでファイルに接続し、その際、Microsoft Ace 16.0を使用する場合は、
【なんとか解決】Microsoft.ACE.OLEDB.16.0 プロバイダーはローカルのコンピューターに登録されていません
32bitのRuntimeをインストールする。

とあるので、Officeが入っていない場合は32bitを選択してください。

English Summary

When you want to make accdb file with VBScript, First, You use Microsoft Access Application, But if you do not have access, second you download and install Access 2010 or 2016 Restributable.
#Dao120はRuntimeではなく再頒布可能コンポーネント
Microsoft Access 2016 Runtime
いままでこれをいれればいいと思っていたのですが。。。
DBEngine.Dao.120をVBScriptで使用する場合、やはり
Microsoft Access Database Engine 2016 Redistributableまたは
Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント
英語名は Microsoft Access Database Engine 2010 Redistributable

そのままでは64bitをいれて32Bitを入れることはできない。

image.png

64bit と 32Bitを共存させる方法 2016版

https://www.idearu.info/article/data/ds1049?_ebx=fldcwkmtf.1563224914.774x8mq
ただし2016は英語しかないのでビビっても仕方ないです。
また、64bit版をインストールすれば32bitと一応共存します。
Dao.120 は 64Bit VBScriptしか動かないからです。

Option Explicit
'http://cup.sakura.ne.jp/vov/db01/vovDB02.htm
'[Windows Vista Later VBScript Boot 64 bit Or 32 bit with Cscript or WScript Which you want to](https://qiita.com/Q11Q/items/e38ae23295f5a5c308db)
'もし、64bit OS Cscript Or 32bit CScipt Wscript で起動されたら、自身を64bit Wscript.exeで起動し直す。
'Vista Later Version
If InStr(LCase(WScript.FullName),"syswow64")  Or InStr(LCase(WScript.FullName),"cscript")Then 
If CreateObject("Scripting.FileSystemObject").FileExists(Replace(LCase(WScript.FullName),"system32","syswow64")) Then
  CreateObject("WScript.Shell").Run """" & replace(Replace(LCase(WScript.FullName),"syswow64","sysnative"),"cscript.exe","wscript.exe") & """ """ & WScript.ScriptFullName & """"
  WScript.Quit
End If
End If
 Dim DbName, TableName, TypeStr
 Dim FSO, DbPath
 Dim CN, ConnStr, CAT, RS, sql
 Dim Dao36, cDB, cmd, dRS, Dao120
 
 DbName = "C:\hoge\test.accdb"
 TableName = "TestTable"
 TypeStr = "ID Counter(1,1) Primary Key, F01Num_yyyymmdd text(8), F02Num_mmddyyyy Text(8), F03Num_yymmddhhmmss Text(14), F04Num_mmddyy Text(6)"
' Locale 
Const dbVersion20=16,dbVersion10=1,dbVersion120=128,dbVersion11=8,dbEncrypt=2,dbDecrypt=4
Const dbVersion30 =32
Const dbVersion40 =64
' Option [databasetypeenum](https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/databasetypeenum-enumeration-dao) 
Const dbLangGeneral = ";LANGID=0x0409;CP=1252;COUNTRY=0" '英語、ドイツ語、フランス語、ポルトガル語、イタリア語、および現代スペイン語
Const dbLangJapanese = ";LANGID=0x0411;CP=932;COUNTRY=0"
Set FSO = CreateObject("Scripting.FileSystemObject")
DbPath = FSO.GetAbsolutePathName(DbName)
If (FSO.FileExists(DbPath) = True) Then FSO.DeleteFile(DbPath)
Set FSO = Nothing
Set Dao120 = CreateObject("DAO.DBEngine.120")
'Set Dao36 = CreateObject("DAO.DBEngine.36")
Set cDB = Dao120.CreateDatabase(DbName,dbLangJapanese,dbVersion120)
sql = "CREATE TABLE " & TableName & " (" & TypeStr & ");"
cDB.Execute(sql)
Set dRS = cDB.OpenRecordSet(tablename)
With dRs
 .Addnew
dRs(1).value = "20190102"
dRs(2).value = "01222018"
dRs(3).value = "20190122000314"
dRs(4).value = "022218"
.Update
End With
drs.Close
cDb.close
Set cDB=Nothing
Wscript.Quit

64bit と 32Bitを共存させる方法 2010版

2013版はありません。
https://www.idearu.info/article/data/ds1046

Windows 10 64 bit Access 2010 Later 64 bitでは

もしAccessが入っていない場合は通常Windows10は64bitのためこちらになります。

  1. 32と64の両方をダウンロード
  2. 絶対になくならないようにバックアップ
  3. システムの復元ポイントを作成(推奨)
  4. まず32bitをインストールする
  5. 64bit /Passiveオプションをつけてインストール

Windows10 64bitでAccess 2010 Later 32bitを入れている場合は

https://www.idearu.info/article/data/ds1049?_ebx=fldcwkmtf.1563224914.774x8mq
Window 7 Access2007以前のAccessから乗り換える場合には32bitのOfficeを意図的に入れる必要があります。記事の時と違い、デフォルトが64Bitになるためです。

  1. 64bit /Passiveオプションをつけてインストール
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths このpath名は2016以降になっても同じなようです。リンク先の指示に従って削除します。
  3. そして32bitを入れます。
1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0