【 Excel BVA 】CSVファイルの1行目以外を削除させるマクロ機能

2No(@2No45519933)です。
楽天、Yahoo!ショッピング、アマゾンなど大手モール。
ネクストエンジン、アシスト店長などの在庫連携システムで必須になってくる、CSVファイルでの商品情報の登録や編集...
作業効率化の為にExcel VBAで編集マクロを作っているのですが、その機能の中で1行目に入っているヘッダ項目以外の削除させる機能を入れているので紹介します!
最近もうちょい綺麗にできないかなーと思い改修してみたので、合わせて紹介します!
もっとこうした方がいいよ!というのがあればご教授くださいませ…
サンプルなのでSubプロシージャ名は適当です…
また、シート名は自身の開発環境に合わせて変更してください。
単純に作るとこんな感じ。
1 2 3 4 5 |
Option Explicit Sub clearSample() Worksheets("Sheet1").Rows("2:" & Rows.Count).clear End Sub |
- Worksheetsで"Sheet1"という名前のシートを選択
- Rows関数で”行”を選択
- Rows関数の範囲を"2:"&Rows.Countにすることで、2行目からそれ以降の行までを範囲に
- clear関数でセルデータを削除
これを実行することで、1行目にあるヘッダ項目以降を全て削除することができます。
ただこのコード、セルデータを削除したいシートが増えると同じ記述をたくさん書くことに…
1 2 3 4 5 6 7 8 |
Option Explicit Sub clearSample() Worksheets("Sheet1").Rows("2:" & Rows.Count).clear Worksheets("Sheet2").Rows("2:" & Rows.Count).clear Worksheets("Sheet3").Rows("2:" & Rows.Count).clear ... End Sub |
これでも要件は達成できるけど、
同じ記述をなんども書くのはプログラム的にもよくないし、何より綺麗じゃない…
そう思ってちょっとだけ改修。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Option Explicit Sub clearSample() 'シート名格納用にVariant型で宣言 Dim ws As Variant '対象シート名を配列に格納 ws = Array("Sheet1", "Sheet2") '配列の要素分だけループさせクリア処理をかける Dim i As Long For i = 0 To UBound(ws) Worksheets(ws(i)).Rows("2:" & Rows.Count).clear Next End Sub |
VBAでのソース量は増えたけど、削除したい対象が増えても配列にシート名を入れていくだけで、同じ処理をかけてくれるので見た目はスッキリしたはず。
ちなみに処理速度はまだちゃんと計測してないです…w
もしかしたら改修する前の方が速いかもしれない?
その辺りは時間ができたら検証してみますね。
今回はネットショップを運営している人を対象にした書き方をしてしまったけど、
やっていることは結構単純なので、別の開発でも汎用的に使えるはず…!
みなさま良いExcel VBAライフを!
それでは!
created by Rinker
¥2,838
(2023/03/29 06:09:57時点 楽天市場調べ-詳細)
ディスカッション
コメント一覧
まだ、コメントがありません