【问题标题】:PowerShell Initiated Excel VBA Macro not doing anythingPowerShell启动的Excel VBA宏没有做任何事情
【发布时间】: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")。另外,Macropublic sub Macro 吗?

标签: excel vba powershell


【解决方案1】:
$ExcelPath = "PathToMyExcel"

$excel = New-Object -comobject Excel.Application
$workbook = $excel.Workbooks.Open($ExcelPath)

$excel.Visible = $true
$app = $excel.Application
$app.Run("Sheet1.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)
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
[System.GC]::Collect()

确保您的工作表名称正确。

我假设它应该是Sheet1,而宏应该是“Sheet1”下的public sub

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 2016-10-02
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多