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


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を入れることはできない。

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を入れます。