【发布时间】:2015-12-29 17:24:19
【问题描述】:
我有一个 PowerShell 脚本可以自动处理一些报告,并且我有许多单独的宏来执行非常相似的自动筛选功能,但标准不同。
是否可以将此条件从 PowerShell 传递到宏中?然后我可以只使用 1 宏。
ColNum = Application.Match("*header", Range("A1:Z1"), 0)
If Not IsError(ColNum) Then
ActiveSheet.Range("A1").AutoFilter Field:=ColNum, Criteria1:="$criterafromPowerShell", Operator:=xlAnd
End If
我目前正在做类似的事情,但反过来,我将这些宏的输出插入工作簿并提取回 PowerShell,如下所示:
$counts = $workbook.worksheets.item(2)
$xRows = $counts.cells.item(1,1).Text
$yeRows = $counts.cells.item(1,2).Text
我承认我可以反过来做,并在文件打开之后和宏运行之前将我想在工作表中使用的文本插入,然后在宏中提取它......但是它看起来很乱。
有什么建议吗?
【问题讨论】:
-
您必须创建一个带有参数的 UDF,使其成为公共范围,并使用
Application.Run方法传递变量。 - 我认为... -
那么在 Excel/VBA 中创建一个函数并使用 Application.Run 从 PowerShell 调用它?我会做一些研究
-
是的,iirc
.Run()方法是 Excel App 类的一部分,因此您可以执行$xlApp.Run("'myWorkbook.xlsm'!Module1.MyUDF()", $arg1, $arg2)之类的操作 - 语法可能不正确,但应该让您了解我在说什么 -
Application.Run (Excel) - MSDN 文章应该比我做得更好!
-
明白了,我会读一读。非常感谢
标签: vba excel powershell