この記事では、指定したcsvファイルに対して、開く⇒編集⇒保存という一連の作業をVBAで自動実行していきます。
応用すれば大量のデータを一括処理できるようになります。
まずは基本となるスキルをこの記事を読んで身に着けておきましょう。
それでは早速やっていきましょう!
基礎スキル解説
①csvファイルを開く
実演に入る前にまずはひとつひとつの基礎スキルを解説しておきましょう。
まずはcsvファイルを開く方法についてです。
◆csvファイルを開く方法
たったのこれだけ。
非常に簡単ですね。
②csvファイルを保存する
次はcsvファイルを保存する方法についてです。
(編集する作業についてはやり方がいろいろありすぎる&この記事の趣旨とはあまり関係がないため、割愛します。やり方が全然わからないという方は後程紹介するサンプルコードをご確認ください。)
ファイルを保存する方法は以下の2つの方法があります。
◆ファイルを保存する方法2つ
・Workbooks(ファイル名).Save
ファイルを開いた直後に編集し、すぐに保存する場合は、一つ目の
ActiveWorkbook.Save
をつかっておけばOKです。
しかし、たくさんファイルを開いて、ファイル間を移動している場合は、二つ目の
Workbooks(ファイル名).Save
を使うようにしましょう。
※事前にファイル名を覚えさせておく必要があります。
⇒後程紹介するサンプルコードをご確認ください。
③csvファイルを閉じる
最後にcsvファイルを閉じる法をご紹介します。
◆csvファイルを閉じるVBAコード
開くときはフルパスを指定したのに対して、閉じるときはファイル名だけを指定するという点に注意しましょう。
※ここでも事前にファイル名を覚えさせておく必要があります。
⇒後程紹介するサンプルコードをご確認ください。
というわけで、一連の作業を行ううえで必要な基礎スキルの解説を行いました。
説明はこのくらいにして、実際の作業に移っていきましょう。
一連の作業を実行するVBAコードサンプル
今回は以下のようにこれから編集するファイルのフルパスをエクセルシートに記述していることを想定してコードを書いていきます。
◆csvファイルを開く⇒編集⇒保存⇒閉じるという作業を行うVBAコードサンプル
Sub open_csv()
'変数の型を宣言
Dim file_path As String
Dim file_name As String
Dim end_row As Integer
'開きたいファイル名を指定
'これから開くファイルを記憶させる
file_path = Cells(2, 1)
'指定したファイルを開く
If Dir(file_path) <> "" Then
Workbooks.Open (file_path)
'開いたファイル名を覚えさせておく(ここ重要!!!)
file_name = ActiveWorkbook.Name
Else
MsgBox "指定ファイルがありません。"
Exit Sub
End If
'開いたcsvファイルを編集
Cells(1, 3) = "data1×5"
end_row = Range("A1").End(xlDown).Row
Range(Cells(2, 3), Cells(end_row, 3)).Formula = "=B2*5"
'編集したので保存する
Workbooks(file_name).Save
'ここは以下の記述でもOK
'ActiveWorkbook.Save
'csvファイルを閉じる
Windows(file_name).Close
End Sub
基本的には
①シートに記述してあるcsvファイルを開く【Workbooks.Open】
②適当に編集する(今回は既存のデータ×5というデータを追加してみました。)
③保存する【Workbooks.Save】
④閉じる【Windows.Close】
という作業をちまちまと行っているだけです。
※ひとつひとつの作業にコメントをつけておりますので、どこでどんな作業を行っているかは理解できるはずです。
また、ファイルを開いた直後に記述している以下の
file_name = ActiveWorkbook.Name
の部分が③、④の部分で活用されます。
これがないと保存、閉じるという作業ができませんので、ご注意ください。
サンプルコードの実行結果
最後に先ほど紹介したコードを実行してみましょう。
実行前にcsvファイルはこんな感じ。
先ほどのVBAコードを実行すると・・・
結果は以下のようになりました。
しっかりとデータが編集されていますね。
おわりに
というわけで今回は指定したcsvファイルを開く⇒編集⇒保存⇒閉じるという作業を実演してみました。
この作業をFor Next とか、Do Loop で繰り返し行えば、大量のデータも一括処理できそうですね。
このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
・日々の残業時間を減らしたい。
・業務をもっと効率的にこなしたい。
・もっと勉強する時間を作りたい。
こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。
この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント