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のためこちらになります。
- 32と64の両方をダウンロード
- 絶対になくならないようにバックアップ
- システムの復元ポイントを作成(推奨)
- まず32bitをインストールする
- 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になるためです。
- 64bit /Passiveオプションをつけてインストール
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths このpath名は2016以降になっても同じなようです。リンク先の指示に従って削除します。
- そして32bitを入れます。
Author And Source
この問題について(Windows10 Access 2010 Later VBScript で DBEgine.Dao.120 を使用するときはAccess 2016 or Access2010再頒布コンポーネントをインストールする必要がある), 我々は、より多くの情報をここで見つけました https://qiita.com/Q11Q/items/f7e449b0d42b972c25ee著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .