【发布时间】:2020-01-20 08:18:56
【问题描述】:
我有一个有效的 VBA 宏,其中包含 Excel 中的有效数据。可能你们中的一些人不想看到那个宏,但相信我它是有效的。它工作了好几个星期,如果我打开文件 PowerShell 将编辑并单击按钮,宏也可以工作,所以没有问题。
首先,我的 PowerShell 脚本应该只执行宏并保存 Excel。 我发现了如何运行宏/单击按钮以及如何保存文件。这是我的代码:
$ExcelPath = "PathToMyExcel"
$excel = New-Object -comobject Excel.Application
$workbook = $excel.Workbooks.Open($ExcelPath)
$excel.Visible = $true
$app = $excel.Application
$app.Run("Sheet.Macro")
Start-Sleep -Seconds 2 # -> Just so I can see what the Macro "Should" be doing
$excel.Visible = $false
$workbook.Saved = $true
$workbook.SaveAs($ExcelPath)
$xl.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($xl)
[System.GC]::Collect()
我的第一个问题是它没有找到并且无法运行宏,所以我从 getgo 激活了宏,后来发现我必须包含我的按钮/宏所在的工作表名称(Sheet.Macro )。
我尝试将 $app.Run("") 更改为所有内容,工作表、工作簿、整个 Excel 路径等,每个人都给我一个错误,它找不到宏,但没有找到“Sheet.Macro” " 它不会返回任何错误,但就像我已经说过的那样,它什么也不做。
所以,现在我没有任何错误,它应该可以工作,但它没有。是因为它是 VBA 宏还是其他的东西?
【问题讨论】:
-
试试 $app.run("workbookName.Macro")
-
正如其他人所提到的......这不应该是 >>>
$xl.Visible>>$excel.Visible -
@Lee_Dailey 只是我在此示例中的拼写错误,但感谢您指出。
-
@f6a4 也没有用。
-
你在哪里定义了宏?是在 Sheet1 下添加的吗?如果是,您可能需要做
$app.Run("Sheet1.Macro")。另外,Macro是public sub Macro吗?
标签: excel vba powershell