我所拥有的是由cscript
调用的JScript文件,此脚本是一个概念验证,它创建一个新的Access 2007格式数据库,将一组VBA模块导入数据库,以及然后从导入的模块中运行子程序。
这个脚本可以在我自己的计算机上完美运行。我安装了Office 2013。但是,我把这个剧本带到了一个同事的机器上让他尝试运行它。在他的机器上,我们得到的错误类似于createdb.js (22, 1): Unspecified error
,错误代码是80004005.我的代码如下:
'use strict';
/**
* AcNewDatabaseFormat Enumeration
* Used with the NewCurrentDatabase method to specify the database format of the newly created database.
*/
var acModule = 5,
dbText = 10,
acNewDatabaseFormat = {
UserDefault: 0,
Access2000: 9,
Access2002: 10,
Access12: 12
};
var fs = new ActiveXObject('Scripting.FileSystemObject');
var access = new ActiveXObject('Access.Application');
var basePath = fs.GetParentFolderName(WScript.ScriptFullName);
var db, prop, vcsFolder, fCur, module;
//Create DB and set up some superficial things.
access.NewCurrentDatabase(basePath + '\\ImportTest.accdb', acNewDatabaseFormat.Access12, null, "", "");
//access.OpenCurrentDatabase(basePath + '\\ImportTest.accdb');
db = access.CurrentDb();
prop = db.CreateProperty('AppTitle', dbText, 'My New Database');
db.Properties.Append(prop);
prop = db.CreateProperty('StartUpForm', dbText, 'Main Form');
db.Properties.Append(prop);
db.Properties('UseMDIMode') = 1;
//Add MSAccess-VCS modules
vcsFolder = fs.GetFolder(basePath + '\\MSAccess-VCS');
fCur = new Enumerator(vcsFolder.files);
for (; !fCur.atEnd(); fCur.moveNext()) {
module = fCur.item().Name.replace('.bas', '');
access.LoadFromText(acModule, module, fCur.item());
}
access.Run('ImportAllSource');
access.Quit();
第22行,第1个字符为access.NewCurrentDatabase(basePath + '\\ImportTest.accdb', acNewDatabaseFormat.Access12, null, "", "");
。 Office(和Access!)2007安装在他的机器上。我们尝试了其他AcNewDatabaseFormat
没有运气。这可能是什么问题?
答案 0 :(得分:1)
由于您未使用任何可选参数,请将其关闭:
access.NewCurrentDatabase(basePath + '\\ImportTest.accdb', acNewDatabaseFormat.Access12);
如果您希望稍后在参数列表中使用其他参数,则只需为可选参数指定值。