【VBA】csvファイルを開く⇒編集⇒保存⇒閉じる!一連の流れを実演!

f:id:yshgs_elec:20210209224940j:plain

この記事では、指定したcsvファイルに対して、開く⇒編集⇒保存という一連の作業をVBAで自動実行していきます。

 

応用すれば大量のデータを一括処理できるようになります。

まずは基本となるスキルをこの記事を読んで身に着けておきましょう。

 

それでは早速やっていきましょう!

スポンサーリンク

基礎スキル解説

①csvファイルを開く

実演に入る前にまずはひとつひとつの基礎スキルを解説しておきましょう。

 

まずはcsvファイルを開く方法についてです。

◆csvファイルを開く方法

Workbooks.Open (開きたいファイルのフルパス)

たったのこれだけ。

非常に簡単ですね。

②csvファイルを保存する

次はcsvファイルを保存する方法についてです。

(編集する作業についてはやり方がいろいろありすぎる&この記事の趣旨とはあまり関係がないため、割愛します。やり方が全然わからないという方は後程紹介するサンプルコードをご確認ください。)

 

ファイルを保存する方法は以下の2つの方法があります。

◆ファイルを保存する方法2つ

・ActiveWorkbook.Save
・Workbooks(ファイル名).Save

ファイルを開いた直後に編集し、すぐに保存する場合は、一つ目の

ActiveWorkbook.Save

をつかっておけばOKです。

 

しかし、たくさんファイルを開いて、ファイル間を移動している場合は、二つ目の

Workbooks(ファイル名).Save

を使うようにしましょう。

※事前にファイル名を覚えさせておく必要があります。

⇒後程紹介するサンプルコードをご確認ください。

③csvファイルを閉じる

最後にcsvファイルを閉じる法をご紹介します。

 

◆csvファイルを閉じるVBAコード

Windows(閉じたいファイル名).Close

開くときはフルパスを指定したのに対して、閉じるときはファイル名だけを指定するという点に注意しましょう。

※ここでも事前にファイル名を覚えさせておく必要があります。

⇒後程紹介するサンプルコードをご確認ください。

 

というわけで、一連の作業を行ううえで必要な基礎スキルの解説を行いました。

説明はこのくらいにして、実際の作業に移っていきましょう。

スポンサーリンク

一連の作業を実行するVBAコードサンプル

今回は以下のようにこれから編集するファイルのフルパスをエクセルシートに記述していることを想定してコードを書いていきます。

編集したいcsvファイルのフルパスを記述した例

◆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ファイルはこんな感じ。

マクロ実行前のcsvファイルの中身

先ほどのVBAコードを実行すると・・・

結果は以下のようになりました。

マクロ実行後のcsvファイルの中身

しっかりとデータが編集されていますね。

スポンサーリンク

おわりに

というわけで今回は指定したcsvファイルを開く⇒編集⇒保存⇒閉じるという作業を実演してみました。

この作業をFor Next とか、Do Loop で繰り返し行えば、大量のデータも一括処理できそうですね。

 

このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

・日々の残業時間を減らしたい。

・業務をもっと効率的にこなしたい。

・もっと勉強する時間を作りたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

 

この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました