Powershell ExcelファイルのWorksheet名存在確認
Worksheet名存在確認
# Excelオブジェクトの作成 $excel = New-Object -ComObject Excel.Application # Excelアプリケーションの表示を非表示にする(必要に応じて) $excel.Visible = $false # 既存のExcelファイルを開く $wb = $excel.Workbooks.Open("Excel.xlsx") # Worksheet名の存在確認 # 引数: wb: Workbookオブジェクト, wsName: Worksheet名 function ExistSheet { param([object]$wb, [string]$wsName) foreach ($sheet in $wb.Sheets) { if ($sheet.Name -eq $wsName) { return $true } } return $false } $SheetName = "Sheet1" # 確認するシート名 $result = ExistSheet -wb $wb -wsName $SheetName if ($result) { Write-Host "${SheetName}は存在します。" } else { Write-Host "${SheetName}は存在しません。" } $SheetName = "Sheet2" # 確認するシート名 $result = ExistSheet -wb $wb -wsName $SheetName if ($result) { Write-Host "${SheetName}は存在します。" } else { Write-Host "${SheetName}は存在しません。" } # Excelファイルを閉じる $wb.Close() # Excelアプリケーションを終了 $excel.Quit() # COMオブジェクトの解放 [System.Runtime.Interopservices.Marshal]::ReleaseComObject($sheet) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($wb) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null # 変数の明示的な解放 $sheet = $null; $wb = $null; $excel = $null # ガベージコレクションを実行 [System.GC]::Collect(); [System.GC]::WaitForPendingFinalizers() [System.GC]::Collect(); [System.GC]::WaitForPendingFinalizers()