ユーザー登録などの業務においては、大抵のシステムの場合CSVファイルによるインポートがまだまだ主流なのではないだろうか。
そのCSVファイルを作成する際に、複数のシステムに向けたインポート用のファイルをシートごとに作成している。
この各シートがそれぞれ、全部同じ行数だったので一括で任意の行を削除できるVBAを作成した。このVBAのメリットとしては、実行するたびに何行目以降削除するのかを指定できる点だ。
この記事を読んでできるようになること
- 指定したシートにおいて任意の行以降を一括で削除
- 任意の行については実行するたびに手入力で指定可能
目次
Excelのサンプル
VBAコードの内容
Sub lineDeletion()
ActiveWorkbook.Save
Dim ws As Worksheet
Dim ans As String
Sheets("Sheet1").Select
Range("A1").Select
ans = InputBox("数字のみ入力してください", "削除を開始したい行を入力", "")
Worksheets("Sheet1").Rows(ans & ":" & Worksheets("Sheet1").Rows.Count).Delete
Worksheets("Sheet2").Rows(ans & ":" & Worksheets("Sheet2").Rows.Count).Delete
Worksheets("Sheet3").Rows(ans & ":" & Worksheets("Sheet3").Rows.Count).Delete
For Each ws In Worksheets
ws.Activate
ActiveWorkbook.SaveAs _
Filename:=ActiveWorkbook.Path & "\" & ws.Name & "_" & Format(Date, "yyyymmdd") & ".csv", _
FileFormat:=xlCSV
Next ws
MsgBox "ファイル作成が完了しました。"
Application.Quit
ActiveWorkbook.Close SaveChanges:=True
End Sub
VBAの使い方
このファイルは一気にCSV化してExcelを閉じるまで実行される。また、CSV化されたファイルはこのExcelと同じ階層にあるので改修して使うという方は専用のフォルダーに格納した状態で使用することをおすすめする。
動きに関しては非常にシンプルだ。
実行するとまず「Sheet1」の「A1」を選択状態になり、ポップアップが表示される。
“4行目以降がいらない”という場合には、「4」と入力することで、設定した全てのシートの4行目以降が完全に削除された状態でCSV化される。
対象のシート名を変更したり、増やしたりする場合は下記の部分を変更すると良い。
Worksheets("Sheet1").Rows(ans & ":" & Worksheets("Sheet1").Rows.Count).Delete
Worksheets("Sheet2").Rows(ans & ":" & Worksheets("Sheet2").Rows.Count).Delete
Worksheets("Sheet3").Rows(ans & ":" & Worksheets("Sheet3").Rows.Count).Delete
まとめ
本記事では自分のためだけに作成した、特定の行以降を全て削除するVBAを紹介した。
似たようなVBAはネットに転がっていたが、毎回削除する行数を指定したかったので割と気に入っている。
※当サイト(tamocolony)では極力最新の情報を掲載するよう努めていますが、掲載内容は最新のものと異なる、もしくは情報自体が誤っている可能性があります。当サイトにて記載している情報について、有用性や正確性、安全性についていかなる保証もするものではありません。
修正の必要や記事に関する質問がある場合は、当サイト問い合わせページよりお知らせいただけると幸いです。