6

Excelの最終行取得についてご紹介します。

標準で用意されている「Excel操作(最終行取得 その1)」は、Used Rangeで最終行を取得しています。
これは"データがあるセル範囲"ではなく、"使用されたセル範囲"を返すプロパティなので、
データが入力されている最終行より下のセルに色がついていたり罫線が設定されていたりすると、
その位置を最終行と判断するので、実際にデータが入力されている最終行とは異なる値を取得します。

「Excel操作(最終行取得 その2)」および「その3」は、最初に空白となった行を最終行としています。
こちらだと、途中に空白セルを含む表の場合に、正確な最終行を取得することができません。

上記をふまえ、データ最終行を取得するサンプルスクリプトを記載します。
「Excel操作(最終行取得 その3」のスクリプトを書き換えて使用してください。

≪削除する記述≫
・「==指定されたセル位置をアクティブ化する==」以下のコード全て
(・「==ハイライトを表示する==」は消しても残しておいてもOK)

≪追加するスクリプト≫

' ====最終行を取得する===================================

'xls形式とxlsx形式で最大値が異なる
ex = fso.GetExtensionName(!ファイル名!)
If ex = "xlsx" Then
RowsCount = 1048576
Else
RowsCount = 65536
End If

Column = !検索列!
xlUP = -4162

r = worksheet.Range(Column & RowsCount).End(xlUP).Row

SetUmsVariable $最終行$, r

Set xlsApp = Nothing
Set existingXlsApp = Nothing
Set ExcelWorkBook = Nothing
Set fso = Nothing
Set worksheet = Nothing

==========================================================

※VBAだと「Rows.Count」「xlUP」は定数なのでそのまま記述して使用できますが、
 VBScriptの定数としては設定されていないので、スクリプト内に変数として記載しています。

ステータスの変更