繁体   English   中英

使用PowerShell打开Excel文件时缺少宏

[英]Macros missing when opening Excel file with PowerShell

我要编写的PowerShell脚本的目的是-打开一个excel文档并运行一个宏。 (该宏存储在“个人工作簿”文件personal.xlsb ,并且可以成功运行)

问题-当通过PowerShell代码打开excel文件时,它可以正常打开,但是当通过调用Run("NameOfMacro")宏时,出现错误,指出找不到宏。 我尝试在打开的Excel文件中找到该宏,但它没有出现在宏列表中。 这似乎是因为无法加载personal.xlsb文件。

所以我关闭了excel文件,手动打开它,但是宏仍然丢失。 然后,我手动打开personal.xlsb文件,并注意到该宏存在,但是该宏仍未出现在excel文件或此后打开的任何其他excel文件中。
经过一个令人沮丧的小时,试图了解为什么personal.xlsb文件突然停止加载。 我注意到另一件事-如果我杀死了PowerShell代码启动的excel.exe进程(通过任务管理器窗口),然后打开任何excel文档,则宏可用!

因此,我将问题缩小到此范围-宏不可用,因为通过PowerShell打开excel文件时不会打开/加载Personal.xlsb

有谁知道为什么会这样,我需要怎么做才能解决?

代码参考

$excel = New-Object -comobject Excel.Application
$FilePath = "D:\DailyReport.xls"
$workbook = $excel.Workbooks.Open($FilePath)
$excel.Visible = $true
$worksheet = $workbook.worksheets.item(1)
$excel.Run("SelectDataFromReport")

我得到的错误-

带有参数“ 31”的调用“运行”的异常:“无法运行宏'SelectDataFromReport'。该宏可能在此工作簿中不可用,或者所有宏都被禁用。”
在行:18字符:11 + $ excel.Run <<<<(“ SelectDataFromReport”)+ CategoryInfo:未指定:(:) [],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException

顺便说一句,我默认使用64位PowerShell控制台,但我也尝试使用32位控制台运行代码,但这没有什么不同。 在excel中,我将该位置添加为受信任位置,并且默认情况下允许在编辑模式下打开excel文件。

您可以像这样在personal.xlsb中调用宏:

$excel = New-Object -comobject Excel.Application
$wbPersonalXLSB = $excel.workbooks.open("$env:USERPROFILE\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLSB")
$FilePath = "D:\DailyReport.xls"
$workbook = $excel.Workbooks.Open($FilePath)
$excel.Visible = $true
$worksheet = $workbook.worksheets.item(1)
$excel.Run("PERSONAL.XLSB!SelectDataFromReport")
$wbPersonalXLSB.Close()
$workbook.save()
$workbook.close()
$excel.quit()
$x1 = New-Object -comobject Excel.Application 
$wb = $x1.workbooks.open("$env:C:\teste\testamacro.xlsm") 
$FilePath = "c:\teste\testamacro" 
$workbook = $x1.Workbooks.Open($FilePath) 
$x1.Visible = $true 
$worksheet = $workbook.worksheets.item(1)     
$x1.Run("testamacro.xlsm!SelectDataFromReport")    
$wb.Close() $workbook.save()`

$workbook.close() 
$x1.quit()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM