【问题标题】:VB6 Excel.Application Object "Permission Denied"VB6 Excel.Application 对象“权限被拒绝”
【发布时间】:2012-05-16 13:39:24
【问题描述】:

我放弃了,将所有内容发送到 XLS VBA。谢谢!

我必须在 Win7 和 Office2010 (v14.0 32bits) 环境中对 VB6 程序进行小修改。 目前程序尝试通过以下代码行实例化:

Dim objExcel as Excel.Application
Set objExcel = New Excel.Application

在执行第二行代码后,我看到了错误 70: Permission Denied。 我在 Excel VBA 上尝试了一个简单的测试,使用同一行代码,效果很好。

有什么线索吗?应该运行的服务是否可能已关闭? 我应该做些什么来避免重新安装 Office?

我收集的提示:

  1. 已尝试在 DCOMCNFG 上配置权限,但找不到 Excel 应用程序。

  2. 已尝试运行 excel.exe /regserver,但似乎没有任何反应:Excel 在本应静默运行时照常运行。

  3. 运行 ProcessMonitor 并发现对 Excel.exe \automation 的调用显示 Path Not Found(我检查了路径,没问题,我猜 \automation 很麻烦)。

  4. 如果我更改代码以实例化 Word 应用程序(当然还有 dll 引用),则会出现同样的错误。

  5. 授予 Office14 文件夹的完全权限。图片在以下链接:http://i.stack.imgur.com/sgZW5.png (抱歉,作为新用户,不能发图)

提前致谢。

加布里埃尔

【问题讨论】:

  • 您是否尝试过右键单击 Excel 并“以管理员身份运行”?
  • 是的,我刚刚做了:1)以管理员身份启动 Excel,2)以管理员身份启动 VB6,出现错误。
  • 你能分享一下你声明excel对象并最终初始化它们的代码吗?
  • @SidharthRout> 更新了帖子。谢谢!
  • 你是这台电脑的管理员吗?

标签: vb6 excel vba


【解决方案1】:

我遇到了类似的问题,我在我的访问 DB VBA 中使用打开 excel 文件,因此我使用命令“Set xlApp = CreateObject("Excel.Application")”,突然有一天开始抛出错误 70访问被拒绝,并且在它工作了几个月之前就可以正常工作。我开始用谷歌搜索它,当我得知这是 DCOM 错误时,我意识到问题的根源。因为几天前我试图将装有 OPC 客户端的 PC 连接到 OPC 服务器,并且需要更改我的本地默认 DCOM 设置,所以我需要更改默认身份验证级别。所以我的问题的解决方案是:

  1. 在命令行中运行命令 dcomcnfg

  2. 转到控制台根目录 > 组件服务 > 计算机 > 我的电脑 > DCOM 配置 > Microsof Excel 应用程序

  3. 右键单击并选择属性

  4. 在常规选项卡中,将身份验证级别更改为“无”

然后打它

【讨论】:

    【解决方案2】:

    试试这个

    1) 打开 Windows 资源管理器并导航到 C:\Program Files (x86)\Microsoft Office

    3) 右键单击​​文件夹“Office14”,然后单击“属性”

    4) 导航到“安全”选项卡

    5) 将“完全控制”授予 [Machine]\Users。

    6) 现在尝试再次运行您的 vb6 应用程序

    【讨论】:

    • 您能否发布 Office 14 文件夹的安全选项卡快照?
    • 顺便说一句,你是唯一使用这台电脑的人吗?
    • > 是的,我是这台电脑上唯一的人。使用快照更新帖子。这个。
    • 好的。我还看不到快照。这样做是出于测试目的。对C:\Windows\System32 文件夹和VB6 文件夹重复相同的步骤
    • 我的用户可以完全控制这两个目录。 VB6 正在以管理员身份运行。
    【解决方案3】:

    这让我很震惊:从您的屏幕截图中,您似乎在 64 位 Windows 上运行 Office 32 位。

    所以默认情况下,当您打开 DCOMCNFG.exe 时,您访问的是 64 位版本。它允许您编辑 64 位 COM 组件。并解释了为什么你在其中找不到 Excel,因为 Excel 是在 WoW64 中运行的。

    您应该尝试以下命令:

    C:\Windows\System32\mmc.exe comexp.msc /32
    

    打开 32 位控制台。从那里您应该找到 Excel 的 COM 组件的设置,并编辑其权限。允许所有人访问,然后再次尝试运行您的程序。如果这可行,您应该在后面调整您的权限以仅允许特定用户(允许 DCOM 访问每个人是危险的......)。

    希望对您有所帮助。

    【讨论】:

    • 哇!!好扣!!我发现该组件审查了权限,但没有工作。尽管如此,我已经尝试过 VBS 并且效果很好(无法在 VB6 上复制)。我将查看 VB6 安装,查看 procmon 快照并通知您。
    • 说实话,我前段时间也遇到过同样的问题......所以你的问题很熟悉,但我花了一些时间才记住。您是否尝试向所有用户和未经身份验证的用户授予权限?
    • 同样在“身份”选项卡下,检查 DCOM 组件以哪个用户身份运行...另一件事是 VB6 可能正在“经典”程序文件目录中查找,而不是 Program Files (x86) 目录。我在 Win7 上安装了一些旧的(~Win98/Win2K 程序)时遇到了这个问题,它们在错误的文件夹中查找。
    • 我检查了项目中的引用,它们指向正确的 dll(本例中为 Excel.exe)。我也添加了所有人,但没有任何反应。我只是不知道。我放弃了,将所有内容发送到 XLS VBA。谢谢!
    【解决方案4】:

    在 DCOM CONFIG 中尝试设置以下内容:

    1. 常规选项卡 -> 身份验证级别 -> 无
    2. 身份选项卡 -> 选择“交互式用户”

    希望对你有帮助

    【讨论】:

    • 老兄,你是救生员! :)
    【解决方案5】:

    您是否检查了计算机上的 DCOM 默认 安全设置?这些位于组件服务 MMC 管理单元中“我的电脑”的属性中。你仍然可以通过运行dcomcnfg 到达那里。

    【讨论】:

    • 我有并且没有找到任何能引起我注意的东西。我应该关注的任何特殊参数?谢谢
    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 2017-11-04
    • 2012-11-03
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    相关资源
    最近更新 更多