PowerShellでExcelの最終行を取得したいときはないでしょうか。
けど、そんな中で悩むことは、
ですよね。
今回はそんなお悩みを解決する
についてまとめます!
もくじ
PowerShellでExcelの最終行を取得する方法
PowerShellでExcelの最終行を取得する方法について説明をします。
対象となるExcelブックのパスを指定し、Powershellのコマンド実行後Excelブックが開き、指定シートの最終行数が出力されていきます。
Excelブックを用意する
まず対象となるExcelブックを用意しましょう。
次に最終行数を取得したいシートに値を入れるか、既存の値の行番号を確認します。
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 | すべての可視セル |
参照:https://learn.microsoft.com/ja-jp/office/vba/api/excel.xlcelltype
変数の値を出力します。
Write-Output $intLastRow
VBAでExcelから直接最終行を取得する方法
VBAでExcelの最終行を取得することができます。VBAの場合はExcelから直接取得できるので便利です。
よろしければごちらもご参考ください。
ExcelからPowerShellを実行し結果をExcelにまとめる
通常PowerShellはコマンドウインドウやPSファイルにして実行するケースが多いですが、
ExcelからPowerShellコマンドを実行してその結果をそのExcelへ返してセルへ表示させることもできます。
もしPowerShellの実行結果を別ファイルにまとめたい場合は、実行環境と出力結果をひとつのExcelでまとめてできるのでとても便利です。
詳細は以下にまとめていますので、よろしければ利用してみてください。
さいごに
いかがでしょうか。
今回は、
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す