“无效的过程或参数”错误
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)
【讨论】:
以上是关于“无效的过程或参数”错误的主要内容,如果未能解决你的问题,请参考以下文章