製品コラム
セイテクエンジニアのブログ 製品コラム PowerShell: Excelシートからセルの値を取得したい-Windows FAQ(仮)
2024年10月16日配信
2025年04月25日更新
執筆者:セイ・テクノロジーズ エバンジェリスト
Officeアプリのコントロールと言えばVBA(Visual Basic for Applications)ですが、PowerShellからもCOMインターフェイスを介してOfficeアプリと比較的簡単にやり取りすることができます。例えば、弊社製品「SSD-assistance」は、サーバーからデータを収集し、Excel(.xlsx)形式のサーバー設定仕様書を自動生成しますが、その設定仕様書から特定の値を取得できれば現在のシステム設定との比較や、再設定に応用できるでしょう。
今回はSSD-assistanceのサーバー設定仕様書を例にしていますが、PowerShellからExcelワークシートを扱う、汎用的な方法として紹介します。なお、この操作を行うには、ローカルコンピューターにMicrosoft 365(Office)アプリがインストールされている必要があります。
画面1は、「Windows設定仕様書【基本設定】」デザインを選択して自動生成させたサーバー設定仕様書です。ご覧のように、「表紙」(Sheet1)から始まる、複数のシートから構成されるExcelワークシート(.xlsx)形式のファイルです。一例として、「システム設定」という名前のシートの「コンピューター名」の値(セルのアドレスJ17)をPowerShellから取得してみましょう。

画面1 サンプルのサーバー設定仕様書
PowerShellのウィンドウ(powershell.exeまたはpwsh.exe)を開き、以下のコマンドラインを順番に実行します。すると、$range.Value()が目的の値を返します(画面2)。

画面2 COMインターフェイス経由でExcelワークシートを開き、特定のシートのセルの値を取得する
先ほどのPowerShellのコマンドラインを、汎用的なスクリプトにしたものが、次の「getvaluefromsheet.ps1」です。このスクリプトを次のように実行することで、指定したExcelワークシートの指定したシートから、指定したセルのアドレスの値を取得できます(画面3)。このスクリプトは、SSD-assistanceのサーバー設定仕様書に限定されず、任意のExcelワークシートに利用できます。

画面3 画面2を汎用化したスクリプト「getvaluefromsheet.ps1」
[getvaluefromsheet.ps1](getvaluefromsheet.txt形式でダウンロード)
| 2026年06月15日 | What’s new in BOM 8.0 SR2: #3 製品コラムのディスク監視スクリプトをテンプレート化 |
|---|---|
| 2026年06月03日 | 一部の情報が採取されず、サーバー設定仕様書の該当項目が空欄になる-SSD-assistance FAQ(仮) |
| 2026年05月13日 | サーバー設定仕様書からWindows Serverの更新状態を確認したい-SSD-assistance FAQ(仮) |
| 2026年04月22日 | Azure VMのホストメトリックをゲスト側から監視したい-BOM for Windows活用例 |
| 2026年04月15日 | What's New in SSD-assistance: #5 アライドテレシス xシリーズ対応 |
| 2026年04月08日 | What's New in SSD-assistance: #4 Linuxへの対応をさらに強化 |
| 2026年03月25日 | カスタム監視のベストプラクティス-BOM for Windows FAQ(仮) |
| 2026年02月25日 | SNMPマネージャーサービスにベンダーMIBを登録する手順-BOM for Windows FAQ(仮) |
| 2026年02月18日 | ディスクとネットワークのパフォーマンス監視がしたい-BOM for Windows活用例 |
| 2026年02月13日 | メモリ/ハンドルリークを監視したい-BOM for Windows活用例 |