“无效的过程或参数”错误

Posted

技术标签:

【中文标题】“无效的过程或参数”错误【英文标题】:"Invalid procedure or argument" error 【发布时间】:2012-08-10 13:58:54 【问题描述】:

我继承了一个 Access DB,但在尝试打开此错误消息时出错:

运行时错误“5”: 无效的过程或参数

我已经在 VBE 中追踪到以下代码:

Set cbMainMenu = CommandBars.Add(Name:="OIG Main Menubar", _
Position:=msoBarTop, MenuBar:=True, Temporary:=True)

在此之前,我从一些谷歌搜索中添加了一个检查,但它似乎不起作用,因为它仍然出错(有和没有错误处理更改):

    On Error Resume Next
    Application.CommandBars(cbMainMenu).Delete
    On Error GoTo 0

任何人有任何想法,或者可以指出我正确的方向来解决这个错误?我会继续努力的。

编辑:

这似乎不是主要的初始错误。我正在努力寻找它,如果/当我找到它时会重新发布。

EDIT2:

这实际上是导致错误的原因,去看看我是否可以解决它:

Set cbcToolsDBCompact = cbpToolsMenu.Controls.Add(Id:=CommandBars("Menu Bar").Controls("Tools").CommandBar.Controls("Database Utilities").CommandBar.Controls("Compact And Repair Database...").Id)

EDIT3:将上述代码更改为:

Set cbcToolsDBCompact = cbpToolsMenu.Controls.Add(Id:=2071)

修复了这个问题,现在有压缩/修复选项。 (它甚至可以工作)。由于除了 cmets 之外没有人真正发布具体的答案,我将使用底部的“回答你自己的问题”选项,以便为未来提供答案。另外,我在这里找到了代码:

MS Access: how to compact current database in VBA

【问题讨论】:

按住shift的时候打开数据库,然后编译一下,看看能不能识别行。如果编译没有报错,那么你可以依次打开每个表单,看看是哪一行实际报错 尝试将Application.CommandBars(cbMainMenu).Delete更改为Application.CommandBars("OIG Main Menubar").Delete 我认为这不再是最初的错误,因为我已经做了一些实验,并且数据库将它变成了我在此之后放入用于调试的一些代码。打算再四处寻找,看看这实际上发生在哪里。感谢您迄今为止的帮助。 那是 Access 2003 风格的菜单栏,你在使用 mdb 吗?该行中的代码自行运行时不会对我造成问题。 是的,它是一个 .mdb,但我无法进入数据库以将其保存为 2007 格式,当我按住“SHIFT”进入时,我只能选择保存程序我正在用“SAVE-AS”查看 【参考方案1】:

我猜这是一个参考问题。

在 Visual Basic IDE 中,单击工具/参考:

在弹出的对话框中,查找Microsoft Office x.0 Object Library:

它旁边有“失踪”这个词吗?如果是这样,那是你的问题。

取消选中缺少的参考并向下滚动并检查随您的 Office 版本安装的参考。

【讨论】:

不,这里看起来不错,Microsoft Office 12.0 对象库,没有丢失。 @BrettG K. 抱歉,这没有帮助。祝你好运:) 谢谢! :-) 我认为这是一个 2k3-2k7 转换问题,但不要引用我的话! ;-)【参考方案2】:

在这里回答我自己的问题。

这是“压缩和修复数据库”选项从 Access 2003 中的位置移动的问题。

VBA 代码将其添加为菜单选项,在 2003 年,代码如下所示:

Set cbcToolsDBCompact = cbpToolsMenu.Controls.Add(Id:=CommandBars("Menu Bar").Controls("Tools").CommandBar.Controls("Database Utilities").CommandBar.Controls("Compact And Repair Database...").Id)

在 2007 年,根据这个问题,在此处找到,MS Access: how to compact current database in VBA 是需要如何处理的:

Set cbcToolsDBCompact = cbpToolsMenu.Controls.Add(Id:=2071)

【讨论】:

以上是关于“无效的过程或参数”错误的主要内容,如果未能解决你的问题,请参考以下文章

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误

网页打开显示错误500是啥意思

PHP错误处理

PHP的错误处理