PowerShellによってExcelの図形のテキストの値を取得するコードが、Web上になかなか見つからなかったので、サンプルコードを作ってみました。
仕様
下記のようなPowerShellのScriptファイル(*.ps1)と、読み込む先のExcelファイルを用意します。
Excelファイルの中には、いくつかテキストボックスを配置して、その中にテキストを記述しています。
これらのテキスト値を抽出し、PowerShellのコンソールに出力しようと思います。
(ちなみにA1セルの値は意味はないです)
ソースコード
Excelファイルを1ファイル読み取って、図形を1つずつループで取得し、テキストをコンソール出力します。
基本的にはPowerShellで記述する場合もVBAで記述する場合も一緒なのですが、細部がPowerShell仕様なので注意が必要です。
readExcelTextBox.ps1
$excel = New-Object -ComObject Excel.Application
$book = $null
$excel.Visible = $false
$excel.DisplayAlerts = $false
$fileName = "Book1.xlsx"
$filePath = (Convert-Path .) + "/" + $fileName
$book = $excel.Workbooks.Open($filePath)
$sheet = $book.Sheets("Sheet1")
# 図形の数だけ繰り返し
for ($i=1; $i -le $sheet.Shapes.Count; $i++){
$text = $sheet.Shapes($i).TextFrame().Characters().Text #図形のテキストを抽出
Write-Host ("テキストボックス値:" + $text)
}
Write-Host ("")
[void]$book.Save()
[void]$book.Close($false)
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($book)
[void]$excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
Pause
テスト実行
「readExcelTextBox.ps1」を選択して、右クリックメニューから「PowerShellで実行」をクリックします。
このようにテキストボックスの値がコンソールに全て出力されたことを確認しました。
参考情報
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 |
2 | PowerShell | 5.1 |
以上です。
コメント