Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell启动了Excel VBA宏,但未执行任何操作_Excel_Vba_Powershell - Fatal编程技术网

PowerShell启动了Excel VBA宏,但未执行任何操作

PowerShell启动了Excel VBA宏,但未执行任何操作,excel,vba,powershell,Excel,Vba,Powershell,我有一个VBA宏,在Excel中有工作数据。也许你们中的一些人不想看到那个宏,但相信我,它是有效的。它工作了好几个星期,如果我打开PowerShell将要编辑的文件并单击按钮,宏也可以工作,因此没有问题 首先,我的PowerShell脚本应该只执行宏并保存Excel。 我了解了如何运行宏/单击按钮以及如何保存文件。这是我的密码: $ExcelPath=“PathToMyExcel” $excel=新对象-comobject excel.Application $workbook=$excel.W

我有一个VBA宏,在Excel中有工作数据。也许你们中的一些人不想看到那个宏,但相信我,它是有效的。它工作了好几个星期,如果我打开PowerShell将要编辑的文件并单击按钮,宏也可以工作,因此没有问题

首先,我的PowerShell脚本应该只执行宏并保存Excel。 我了解了如何运行宏/单击按钮以及如何保存文件。这是我的密码:

$ExcelPath=“PathToMyExcel”
$excel=新对象-comobject excel.Application
$workbook=$excel.Workbooks.Open($ExcelPath)
$excel.Visible=$true
$app=$excel.Application
$app.Run(“Sheet.Macro”)
开始睡眠-秒2#->这样我就可以看到宏“应该”在做什么
$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宏还是其他什么

$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

试试其他人提到的$app.run(“workbookName.macro”)。。。这个>>
$xl.Visible
$excel.Visible
@Lee_Dailey只是我在这个例子中犯的一个拼写错误,但谢谢你指出它。@f6a4也不起作用。你在哪里定义了宏?是否添加在表1下?如果是,您可能需要执行
$app.Run(“Sheet1.Macro”)
。另外,
是公共子宏?