我想使用Powershell在Excel应用程序的VBA菜单中执行Project Properties命令。
以下是脚本 -
$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获取空值?
答案 0 :(得分: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)文件>中导航来访问此设置。选项>信托中心>信任中心设置>宏设置。