製品コラム
セイテクエンジニアのブログ 製品コラム 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年02月25日 | SNMPマネージャーサービスにベンダーMIBを登録する手順-BOM for Windows FAQ(仮) |
|---|---|
| 2026年02月18日 | ディスクとネットワークのパフォーマンス監視がしたい-BOM for Windows活用例 |
| 2026年02月13日 | メモリ/ハンドルリークを監視したい-BOM for Windows活用例 |
| 2026年01月30日 | What's New in SSD-assistance: #3 Cisco Catalystシリーズ対応 |
| 2025年12月24日 | ネットワークポートの枯渇を監視したい-BOM for Windows活用例 |
| 2025年12月17日 | What’s new in Job Director R17: Microsoft 365に対応したメール送信部品、設定方法解説 |
| 2025年12月12日 | 任意の設定仕様書の差分比較がしたい ─ SSD-assistance活用例 |
| 2025年11月27日 | 必要な分だけ購入する「インシデントサポート」とは?年間保守契約との違いとコストメリットを解説 |
| 2025年11月12日 | システム時刻の大きなズレを監視したい-BOM for Windows活用例 |
| 2025年07月30日 | Windows Server 2025 Active Directory環境におけるLDAPサーバー連携の既知の問題-Job Director FAQ(仮) |