本文提供了帮助,以解决不是管理员的用户遇到的 Microsoft Visual Basic for Applications (VBA) 权限问题。
重要
本文包含有关如何修改注册表的信息。 修改注册表之前,一定要先对其进行备份。 并且一定要知道在发生问题时如何还原注册表。 有关如何备份、还原和修改注册表的详细信息,请参阅 高级用户的 Windows 注册表信息。
适用于: Microsoft Dynamics GP
原始 KB 数: 929612
现象
在 Microsoft Dynamics GP 中,用户遇到以下一个或多个问题:
- Microsoft Dynamics GP 不链接到 Microsoft Visual Basic for Applications (VBA) 编辑器。
- Microsoft Dynamics GP 不会将 windows 或字段从 Microsoft Dynamics GP 复制到 VBA 中的 Microsoft Dynamics GP 项目。
- Microsoft Dynamics GP 不运行现有的 VBA 代码。 此外,Microsoft Dynamics GP 不会在终端服务器或 Citrix 中运行代码。
此外,Microsoft Dynamics GP 安装期间没有错误消息。
注意
VBA 安装在 Microsoft Dynamics GP 安装过程中。
原因
出现此问题的原因是用户没有计算机或域的管理凭据。
决议
警告
如果使用注册表编辑器或使用其他方法错误地修改了注册表,则可能会发生严重问题。 这些问题可能需要重新安装操作系统才能解决。 Microsoft 不能保证可以解决这些问题。 您应自行承担修改注册表的风险。
若要解决此问题,请使用以下方法之一。
方法 1
对于尝试使用 VBA 的计算机,应以管理员本地组成员或 Power Users 本地组成员身份登录。 可以编辑计算机上的注册表,以启用对其他用户的 VBA 访问。 但是,建议的解决方案是将用户包含在两个本地组中的至少一个中。 建议的修改以启用对其他用户的 VBA 访问权限,如下所示。
注意
在该过程中,您将修改以下注册表项:
HKEY_CLASSES_ROOT\Clsid
HKEY_CLASSES_ROOT\Typelib
HKEY_CLASSES_ROOT\Interface
HKEY_LOCAL_MACHINE\Software\Classes\CLSID
若要对注册表项设置权限,请执行以下步骤:
以管理员身份登录。
启动“注册表编辑器”。 为此,请单击“开始”,单击“运行”,键入regedt32.exe,然后单击“确定”。
找到以下注册表项:
HKEY_CLASSES_ROOT\Clsid
在 “安全 ”菜单上,单击“ 权限”。
注意
此时会显示“注册表项权限”窗口。
单击“ 添加”,添加用户或组,然后单击以选中“ 完全控制 ”复选框以指定访问类型。
单击“确定”关闭“注册表项权限”窗口。
对剩余的注册表项重复步骤 3 到 6。
退出注册表编辑器。
注意事项
退出注册表编辑器时,更改权限的其他用户可以注册类型库、组件对象模型 (COM) 对象和其他对象。
方法 2
注意
以下步骤尚未经过广泛测试。 我们能够以非管理用户身份成功运行 Microsoft Dynamics GP 和 VBA。 自 Microsoft Dynamics GP 9.0 Service Pack 1(SP1)起,可以为所有用户提供 VBA 功能,而无需公开任何注册表项。
若要为所有用户提供 VBA 功能而不公开任何注册表项,请执行以下步骤:
以管理员身份登录。
启动 Microsoft Dynamics GP,启动 VBA 编辑器,然后退出 Microsoft Dynamics GP。
搜索位于以下位置的 Controls.exd 文件:
\Documents and Settings\username\Local Settings\Temp\Dynamics9.0
将此文件复制到所有用户可以访问的位置。 例如,将文件复制到以下位置:
\Documents and Settings\All Users\DynamicsVBA
单击“开始”,单击“运行”,键入以下内容,然后单击“确定” :
regtlib.exe "C:\Documents and Settings\All Users\DynamicsVBA\Controls.exd
使用 RptControls.exd 文件重复步骤 3 和步骤 4。
注意
仅当 VBA 文件包含报表修改时,此文件才存在。
在以下位置搜索 MSForms.exd 文件:
\Documents and Settings\username\Local Settings\Temp\VBE
如果此文件存在,请使用 RptControls.exd 文件重复步骤 4。
注意
仅当 VBA 文件包含用户表单时,此文件才存在。
此时,非管理用户应能够运行 VBA 代码,而无需授予对任何注册表项的访问权限。 但是,可能首先必须删除 Controls.exd 文件、RptControls.exd 文件和 MSForms.exd 文件。
注意
每次当 VBA 项目通过使用 VBA 编辑器、导入包文件或将不同的 VBA 文件放入代码文件夹中被更改时,都必须重复这些步骤。