三流君のソースコード置き場

ブログにソースコードをアップして、ブログの検索機能で利用してます(利用予定です)

よく検索されるキーワード: [VBA]/ [VBS]/ [CreateObject]/ [Excel]/ [ADO]


Excel VBAで最終行を求める VBSで使うには Excelの定数を使う方法

例題として
Excelのデータ最終行までを処理するコードをVBSで実行してみます

下記、いつもの解説動画です※蛇足付きですがよろしく。
【VBS】VBSでExcelの定数xlDownなどを使う方法 例.End(xlDown).Rowで最終行【三流君】 - YouTube
www.youtube.com

最終行までループさせるコードでよく見かけるのが

Range("A1").End(xlDown).Row
などで、
データの入ってる最終行を求め、
ループで回す方法です。

Sub test最終行までループする()
    Dim i As Long
    Dim MaxRow As Long
    
    MaxRow = Range("A1").End(xlDown).Row
    For i = 2 To MaxRow
        MsgBox i & "行目" & Cells(i, "B") & " さん"
    Next i
    
End Sub

これをVBSに移植すると

1.エラーの例

'errサンプル
Option Explicit

Dim ex, bk, sh, i

Set ex = GetObject(,"Excel.Application") '開いているExcel

Set bk = ex.Workbooks(1)   'ブック

Set sh = bk.Worksheets(1)  'シートを指定

For i = 2 To sh.Range("A1").End(xlDown).Row  'シート最後までループ
    MsgBox i & "行目" & sh.Cells(i, "B") & " さん"
Next

xlDownでエラーが発生する
VBScriptExcelの定数xlDownが定義されていないため

2.定数を調べて直接書く方法
定数がエラーなので、
ExcelVBA イミディエイトやネットでxlDownの値を調べて書く

? xlDown

  • 4121

f:id:ken3memo:20180711035124j:plain

Option Explicit

Dim ex, bk, sh, i

Set ex = GetObject(,"Excel.Application") '開いているExcel

Set bk = ex.Workbooks(1)   'ブック

Set sh = bk.Worksheets(1)  'シートを指定

For i = 2 To sh.Range("A1").End(-4121).Row  'シート最後までループ
    MsgBox i & "行目" & sh.Cells(i, "B") & " さん"
Next

みたいに、
sh.Range("A1").End(-4121).Row
と直接書く方法もあります。

3.定数をConstで定義する
sh.Range("A1").End(-4121).Row
これだと、後からソースを見た時に
.End(-4121)?ってなると思います。
※コードの意味が伝わりにくいです

そこで、頭で自分でxlDown=-4121を定義しておきます。

Option Explicit

Const xlDown = -4121  '定数をConstで定義

Dim ex, bk, sh, i

Set ex = GetObject(,"Excel.Application") '開いているExcel

Set bk = ex.Workbooks(1)   'ブック

Set sh = bk.Worksheets(1)  'シートを指定

For i = 2 To sh.Range("A1").End(xlDown).Row  'シート最後までループ
    MsgBox i & "行目" & sh.Cells(i, "B") & " さん"
Next

ポイントは、
Const xlDown = -4121 '定数をConstで定義
として(書いて)、
For i = 2 To sh.Range("A1").End(xlDown).Row

使います。

Excel VBA を VBSに移植するときに
定数の探り方やエラーが出た時の参考となれば。。。



余談、元ネタ
ken3memo.hatenablog.com
先輩やネット上のコードは正しく理解して使いましょう?
コードは言語なので、書き手のクセや表現方法があるのかも?

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)


Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。

三流解説動画の再生リスト
https://www.youtube.com/user/ken3video/playlists

本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)