【问题标题】:Accessing Excel VBA editor from Powershell从 Powershell 访问 Excel VBA 编辑器
【发布时间】:2016-03-02 15:00:54
【问题描述】:

我想使用 Powershell 在 Excel 应用程序的 VBA 菜单中执行项目属性命令。

以下是脚本 -

$excelApplication = New-Object -ComObject ("Excel.Application")
$excelApplication.Visible = $True

$workbook = $excelApplication.Workbooks.Open("C:\Workbooks\PasswordProtectedVBEFile.xlsm")
$appReference = $workbook.Application
$appReference.VBE.CommandBars(1).FindControl(2578, $True).Execute()

我遇到错误 - You cannot call a method on a null-valued expression.,检查显示 - $appReference.VBE 为空。即Write-Host $appReference.VBE 输出空行。

我需要帮助解决为什么我会得到 VBE 的空值?

【问题讨论】:

标签: powershell


【解决方案1】:

我找到了出路!

简而言之,我们需要明确授予对 VBA 项目模型的访问权限,然后才能使用脚本以编程方式自动化/访问。 这一发现的旅程很有趣。我偶然发现了this git 项目,它帮助我解决了问题。

我的问题的解决方案是我在引用项目中找到的安全检查

$mo = Get-ItemProperty -Path HKCU:Software\Microsoft\Office\*\Excel\Security `
                       -Name AccessVBOM `
                       -EA SilentlyContinue | `
          ? { !($_.AccessVBOM -eq 0) } | `
          Measure-Object

此安全检查可确保 VBA 项目模型以编程方式可用。好吧,尽管这只是对注册表的检查,但我想知道如何设置值。这是 Excel 中的简单且一次性的活动。

您可以通过选中“信任对 VBA 项目模型的访问”复选框来允许此类编程访问。可以通过在 Excel (2010) 文件 > 选项 > 信任中心 > 信任中心设置 > 宏设置中导航来访问此设置。

【讨论】:

    猜你喜欢
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    相关资源
    最近更新 更多