本コーナーでは、私が普段実務で手作業の自動化ツールを作成する中で実装している
処理の一部をピックアップし、掲載用にカスタマイズしたものをご紹介していきます。
全て私の実務ベースで使っているものなので、使いこなすことが出来れば、必ずや
手作業の自動化に一役買ってくれる内容ばかりと勝手に自負しています。
「本だけじゃなくてExcel VBAを実践的に勉強してみたい!」
「ハードル高くて苦手だったけどもう一度VBAを勉強してみたい!」
「実務で役に立つVBAを学びたい!」
そんな方々の学習意欲向上の一助になれば大変嬉しく思います。
おススメ書籍
今回のテーマはこちらです👇
#5:CSVデータを書き出す
以前にご紹介した#1のマクロでは、CSVデータをエクセルシートに取り込むマクロの
事例をご紹介しました。今回はその逆、エクセルシートからCSVデータを書き出す
マクロを見ていきましょう。#1の詳細について知りたい方は是非下記の記事も
ご覧下さい!
ツールの全体像
まずは任意のエクセルシートに、CSVを書き出すための一覧を作成しておきます。
本ツールのVBAコードは以下の通りです。
VBAコード ※パソコンでの閲覧推奨
Option Explicit '=================================================== 'ツール名:CSVデータ書込ツール(まえきんブログ掲載用にカスタマイズ) '作成日:2022/03/26 '処理概要:CSVデータ書込 '付属機能:なし '作成者:まえきん '=================================================== '=================================================== '定数宣言 '=================================================== Const kakikomi As String = "CSV書込シート" '=================================================== '関数名 :メイン関数(CSVデータ書込ボタン) '処理内容:CSVデータ書込 'トリガー:CSVデータ書込ボタンを押下した際にコールされる '引数 :なし '戻り値 :なし '=================================================== Private Sub CommandButton1_Click() '---------- '変数宣言 '---------- 'CSV書き出し用変数宣言 Dim filePath As String 'CSV出力先ファイルパス変数 Dim i As Long Dim fileNo As Integer 'ファイル番号 '---------- '初期値設定(ツールと同じ階層にCSV出力) '---------- filePath = ActiveWorkbook.Path & "\読者様へメッセージ.csv" 'FreeFile関数で使用可能なファイル番号取得 fileNo = FreeFile '---------- 'CSVデータ出力処理 '---------- 'ファイルオープン(存在しない場合は自動生成) Open filePath For Output As #fileNo 'データレコード書き込み For i = 1 To 5 With Worksheets(kakikomi) Print #fileNo, .Cells(i, 1) & ","; .Cells(i, 2) End With Next i '書き込み用CSVファイルを閉じる Close #fileNo '---------- '処理完了通知 '---------- MsgBox "CSVデータを作成しました!" End Sub
VBAコード解説
初期値設定(ツールと同じ階層にCSV出力)
まずは書き出し対象のCSVファイル名と書き出し先を指定する処理を記述します。
私はいつも「ActiveWorkbook.Path」を使用しています。
こうしておくと、どの階層にファイルを置いていてもマクロ実行時に現在地の
ファイルパスをきちんと判断して拾い、マクロブックと同階層に作成されるように
指定できるので大変重宝しています。次にFreeFile関数で使用可能なファイル番号を
取得しておきます。これはCSVファイルを書き出す時のお決まりの下準備になります。
CSVデータ出力処理
さて、ここからは実際にCSVデータを書き出す処理を記述していきます。
①Openメソッド:CSVファイルオープン、②Printステートメント:CSV書き出し、
③Closeメソッド:CSVファイルクローズの手順を踏みます。
ちなみに、②のPrintステートメントにて、For文を使って1行ずつループで書き出しを
行うわけですが、今回のケースではMAX5行分のレコードを書き込むのでループの
終わりは「5」になります。もう少し汎用性を持たせる高度なマクロになってくると、
このループの終わりを動的に設定する必要も出てくることになるでしょう。
この応用版マクロのお話は、またいずれ😊
マクロ実行結果
処理完了通知
CSV保存 ※マクロブックと同じ階層に保存されている
CSVの中身
上記の通り、結果が得られましたでしょうか😊
私は実務でCSV→エクセル取込、エクセル→CSV書き出しいずれのケースも
扱うことが多く、このツールの出番も多いです。
このシリーズも今回で早5回目を迎えましたが、いかがでしょうか。
役に立ちそうだ!!と思えた事例に出会えたでしょうか。
一度ノウハウを得ると、その応用やアイデア次第で色んなツールが作れてしまう
のでそれもExcel VBAの醍醐味の一つだと私は捉えています。
当ブログの読者様はもちろん、偶然この記事に辿り着いて下さった皆さまとも今後も
この素晴らしさを楽しく共有し、スキルアップもしていけたらと思っています。
今回はこれで以上です😊
最後まで読んで頂きありがとうございました!ではまた!
コメント