执行与 Excel 现有工作表相关的 If 语句

Do an If statement relating to Excel Sheets existing

我希望能够检查 Sheet 或 Excel 中名称为 "ALPHA"(例如)的工作表作为我的自动化脚本的一部分是否存在。

我的主要目标是能够执行以下功能:

if ("ALPHA" exists) {Code A}

if ("ALPHA" does not exist) {Code B}

你知道标准的 If 语句

但我似乎不知道该怎么做

我试过了

$file = "$path\excel.xlsx"

$Exl = New-Object -ComObject "Excel.Application"
$Exl.Visible = $false
$Exl.DisplayAlerts = $false

$wbk = $Exl.Workbooks.Open($file)
$wst = $wbk.worksheets | where {$_.name -eq "*ALPHA*"}

 If (Test-Path $wst) 

    {echo 1}

  Else {echo 2}

但我得到的只是:

Test-Path : Cannot bind argument to parameter 'Path' because it is null.

部分要求是,如果 Alpha 是来自

的变量,它需要能够工作
ForEach (Alpha in Bet)

事实上可能还有其他 Sheet 而不仅仅是 Alpha,我不想仅仅通过执行影响那些的 "if -eq" 或 "if -ne" 来触发代码张


感谢@mklement0 的澄清和回答

实施起来比我想象的要简单得多

以下是我正在寻找的答案代码:

 $wst = $wbk.worksheets | where {$_.name -like "*ALPHA*"}

 if ($wst) { Echo 1 }
 Else {Echo 2}

据我所知,唯一需要更改的是:

$wst = $wbk.worksheets | where {$_.name -eq "*ALPHA*"}

If (Test-Path $wst) { ... }

必须是(注意使用 -like 而不是 -eq,并且没有 Test-Path):

$wst = $wbk.worksheets | where {$_.name -like "*ALPHA*"}

if ($wst) { ... }

要使用通配符(模式)匹配,必须使用专用的-like运算符,而不是-eq.

如果没有工作表匹配,则返回 $null,因此条件 if ($wst) 将仅在 至少 1 个工作表被计算为 $true返回。
因此,请注意 $ws 实际上可能是工作表的 数组 ,如果有多个匹配名称模式的话。

Test-Path cmdlet 旨在与 PowerShell 驱动器提供程序 一起使用,此处未发挥作用。)