如何在Excel VBA中创建MS Access Runtime的对象

时间:2017-07-20 14:41:03

标签: excel-vba vba excel

当我在Excel VBA中创建对象时,我有Microsoft Access Runtime不是完整版的Microsoft Access

Set objAccess = CreateObject("Access.Application")

那时我正在

  

错误429" ActiveX组件无法创建对象。"

建议如何创建对象?

1 个答案:

答案 0 :(得分:3)

我不确定这些信息是否仍然与OP相关,但可能会帮助其他人(如我)寻找解决方案:

在简单路线的情况下

Dim AccApp as Object
Set AccApp = CreateObject("Access.Application")

不起作用(例如,因为只有Access的运行时版本可用),以下路线似乎可行:

Const PathToDBFile as String = "W:\here\Your\DB\lies.accdb"
Const PathToAccess as String = "C:\Program files\YourOfficeVersion\MSACCESS.EXE"
Dim ShellCmd as String
' Piece together the parts (yes, the quotes are necessary in case there are spaces in the paths) 
ShellCmd = """" & PathToAccess & """ """ & PathToDBFile & """"
' Execute the command in the shell
VBA.Shell ShellCmd
' Now GetObject can return the newly created instance of Access
Dim AccApp as Object
Set objAcc = GetObject(PathToDBFile)

(Source)

此代码只是展示基本步骤的基本内容。可能要确保没有一个正在运行的Access实例。另外,我还没有弄清楚如何在不同系统上可靠地获取MSAccess.exe的路径。但是当我在仅安装了运行时版本的系统上尝试时,以上内容对我有用。 (我能够从AccApp.Run "MyFunction"获得正确的回报。)