PowerShellでExcelの最終行を取得する方法!

powershell

PowerShellでExcelの最終行を取得したいときはないでしょうか。

けど、そんな中で悩むことは、

・PowerShellでExcelの最終行を取得したいが方法がよくわからない

ですよね。

今回はそんなお悩みを解決する

・PowerShellでExcelの最終行を取得する方法

についてまとめます!

PowerShellでExcelの最終行を取得する方法

PowerShellでExcelの最終行を取得する方法について説明をします。

対象となるExcelブックのパスを指定し、Powershellのコマンド実行後Excelブックが開き、指定シートの最終行数が出力されていきます。

Excelブックを用意する

まず対象となるExcelブックを用意しましょう。

次に最終行数を取得したいシートに値を入れるか、既存の値の行番号を確認します。

タカヒロ
タカヒロ
サンプルでは1シート目の30行目を最終行数としています。

30

そして、Excelブックのパス情報をメモ帳などに控えておきます。

D:\test\フォルダ\対象ブック.xlsx

PowerShellでExcelの最終行を取得するコマンド

PowerShellでExcelの最終行を取得するコマンドを設定していきましょう。

サンプルコマンドは以下の通りです。

サンプルコマンド

$objExcel = New-Object -ComObject Excel.Application
$objWorkbook = $objExcel.Workbooks.Open('D:\test\フォルダ\対象ブック.xlsx')
$objWorksheet = $objWorkbook.Sheets.Item('Sheet1')
$intLastRow = $objWorksheet.Cells.SpecialCells(11).Row
Write-Output $intLastRow

コマンドの設定

コマンドの設定をしていきましょう。

先ほどメモした対象ブックのパスを入力していきます。

$objWorkbook = $objExcel.Workbooks.Open('D:\test\フォルダ\対象ブック.xlsx')

次に取得対象シート名を入力していきます。
サンプルでは「Sheet1」としています。

$objWorksheet = $objWorkbook.Sheets.Item('Sheet1')

タカヒロ
タカヒロ
シート名の他にシートの位置番号でも指定が可能です。
例えば1シート目であれば$objWorksheet = $objWorkbook.Sheets.Item(1)でOKです。

実行する

コマンドを実行しましょう。

Excelブックが開き、数値が出力されましたね!

先ほど確認した最終行数と一致していますので問題なさそうです!

別シートの最終行数を取得する

次に別シートの最終行集も取得してみましょう。

シート名は「Sheet2」、最終行数は20としています。

サンプルコマンド

設定済みサンプルコマンドは以下の通りです。

$objExcel = New-Object -ComObject Excel.Application
$objWorkbook = $objExcel.Workbooks.Open('D:\test\フォルダ\対象ブック.xlsx')
$objWorksheet = $objWorkbook.Sheets.Item('Sheet2')
$intLastRow = $objWorksheet.Cells.SpecialCells(11).Row
Write-Output $intLastRow

実行する

コマンドを実行しましょう。

Sheet2の最終行数が取得されましたね!

コマンドの説明

Excelアプリケーションを取得しオブジェクトにセットします。

$objExcel = New-Object -ComObject Excel.Application

Openメソッドで対象Excelブックを開き、オブジェクトにセットします。

$objWorkbook = $objExcel.Workbooks.Open('D:\test\テンプレ.xlsx')

Excelブックの対象シートをオブジェクトにセットします。

$objWorksheet = $objWorkbook.Sheets.Item('Sheet2')

Range.SpecialCellsメソッドのXlCellTypeに使われたセル範囲内の最後のセルを意味する定数11(xlCellTypeLastCell)を指定して、Cellsオブジェクトの最終行数を取得します。

$intLastRow = $objWorksheet.Cells.SpecialCells(11).Row

XlCellTypeに設定できるプロパティは以下の通りです。

名前 説明
xlCellTypeAllFormatConditions -4172 表示形式が設定されているセル
xlCellTypeAllValidation -4174 条件の設定が含まれているセル
xlCellTypeBlanks 4 空白セル
xlCellTypeComments -4144 コメントが含まれているセル
xlCellTypeConstants 2 定数が含まれているセル
xlCellTypeFormulas -4123 数式が含まれているセル
xlCellTypeLastCell 11 使われたセル範囲内の最後のセル
xlCellTypeSameFormatConditions -4173 同じ表示形式が設定されているセル
xlCellTypeSameValidation -4175 同じ条件の設定が含まれているセル
xlCellTypeVisible 12 すべての可視セル

タカヒロ
タカヒロ
PowerShellの場合、定数11ではなくプロパティ「xlCellTypeLastCell」では指定できないのでご注意ください。

参照:https://learn.microsoft.com/ja-jp/office/vba/api/excel.xlcelltype

変数の値を出力します。

Write-Output $intLastRow

VBAでExcelから直接最終行を取得する方法

VBAでExcelの最終行を取得することができます。VBAの場合はExcelから直接取得できるので便利です。
よろしければごちらもご参考ください。

【Excel VBA】最終行を取得する方法5選!取得できない対処法も!

ExcelからPowerShellを実行し結果をExcelにまとめる

通常PowerShellはコマンドウインドウやPSファイルにして実行するケースが多いですが、

ExcelからPowerShellコマンドを実行してその結果をそのExcelへ返してセルへ表示させることもできます。

もしPowerShellの実行結果を別ファイルにまとめたい場合は、実行環境と出力結果をひとつのExcelでまとめてできるのでとても便利です。

詳細は以下にまとめていますので、よろしければ利用してみてください。

Excel VBAでPowerShellを実行する方法2選!処理結果取得も!

タカヒロ
タカヒロ
だいたい5~10分ぐらいで追加インストールなしで用意することができます。

さいごに

いかがでしょうか。

今回は、

・PowerShellでExcelの最終行を取得する方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です