function - 如何将 COM 对象参数传递给 PowerShell 函数?
问题描述
我有一个 PowerShell 脚本来打开几个 Excel 电子表格并写入每个电子表格中的一个单元格。我想把代码打开每个电子表格,写入它,并将其保存在一个函数中。我不想为每个电子表格创建一个新的Excel.Application
COM 对象实例,而是将一个实例传递给函数,以便可以重用该实例。
这是我的功能:
function InsertBlurb
{
param([Object[]]$xl, [string]$filename, [string]$blurb)
$WorkBook = $xl.Workbooks.Open($filename)
$WorkSheet = $WorkBook.Sheets.Item("Print Out")
$WorkSheet.Cells.Item(12, "A") = $blurb
$WorkBook.Save()
$WorkBook.Close()
}
# Call looks like this
InsertBlurb($objExcel, $dsBook, $blurb)
当我尝试运行该函数时,出现错误:
You cannot call a method on a null-valued expression.
At T:\rclocher3\Excel-to-PDF2.ps1:32 char:35
+ $WorkBook = $xl.Workbooks.Open <<<< ($filename)
+ CategoryInfo : InvalidOperation: (Open:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
如何将 COM 对象的实例传递Excel.Application
给 PowerShell 函数?
解决方案
首先,您的电话应该是:
InsertBlurb $objExcel $dsBook $blurb
调用 Powershell 函数时不带括号和逗号。
IDK 如果您在函数中定义了 $xl,请写入。也许,也许不是……倾向于后者,但不确定。如果类型错误,您可以省略类型。很难想象它是一个对象数组。
推荐阅读
- php - 在 OceanWP 主题的 WooCommerce 中删除主商店的简短产品描述
- powershell - 文件夹名称 - 用空格替换句号
- c++ - c ++在期望out_of_range时没有抛出异常
- c - read() 在有效的文件描述符上返回错误的文件描述符
- angular - 无法在 Ionic 应用程序中设置和删除存储的参数
- javascript - JS - 检测设备是否在某个轴(X、Y、Z)上旋转超过阈值度数
- python - Json上循环的列表索引超出范围错误
- python - 由于方法中的“默认参数值是可变的”,Python/Django 随机数据库查询结果
- linux - 如何在我的 Linux 系统上安全地重新配置 gcc?
- python - 为什么 X=1 概率质量函数和累积密度函数不同?