テキストファイルの編集を行う際に、わざわざ
①既存のテキストを開く
②手作業で数値を変更する
③ファイル名を変更する
④所定のフォルダに保存する
という非常に面倒な作業をしている人は多いのではないでしょうか?
この記事ではそんな一連の作業をすべて自動化する方法をご紹介します。
初心者向けに画像多めでわかりやすく説明していきますので、ぜひ最後までごらんください。
さっそくやっていきます!
※以下の記事では似たような作業をもうすこし簡単にご紹介しています。
興味がある方はぜひあわせてご覧ください。
【VBA】テキストファイルを指定した行だけ書き換える方法!Ver.1編集前データもそのまま
【VBA】テキストファイルを指定した行だけ書き換える方法!Ver.2編集前データ名として保存
はじめに
この記事では、
①テキストファイルの読み込み方法
②テキストの編集方法
③編集データの保存方法
という3つの処理に分けてVBAコードの解説していきます。
それぞれの処理ごとにコードを実行していきますので、どのような動きがあるのかを確認していきましょう。
単純にすべての作業を一発で実行してしまうより、あなたの理解が深まるはずです。
それでは実際の作業に移っていきましょう。
事前準備の説明
VBAのコーディングに入る前に、エクセルシートに以下の情報を入力しておきます。
〇編集前のファイルが入っているフォルダのフルパス
〇編集前のファイルの名前
〇編集後のファイルを保存するフォルダのフルパス
〇編集後のファイルの名前
今回は以下のように記入を行いました。
※以降で紹介するVBAコードではこれらのセルを参照していきますので、私と違うセルに情報を入力した場合は、コードも書き換える必要があります。
また今回は9行目以降にテキストファイルを張り付け、そのセル上でデータ編集を行うようにしています。
そのため、編集場所も念のため記載しています。
※記事をわかりやすくするためですので、A8セルの記述はなくても構いません。
ちなみに、このエクセルシートに記入されているフォルダの中身は以下のようになっています。
左のフォルダの中に、これから読み込むファイル(base_file.txt)が入っています。
また、右側のフォルダが、読み込んだファイルを編集した後に、ファイルを保存する場所です。
(VBA実行前は空です。実行後、ここに新たにファイルが生成されます。)
また、今回読み込むテキストファイル(base_file.txt)は以下のようにデータが記入されています。
事前の説明はこのくらいにして、ここからは実際のVBAコード記述に移っていきます。
テキストファイルの読み込みまで
まずは編集したいテキストファイルを読み込む作業を行います。
事前準備段階でエクセルシートのA列に記入したファイルを、同じエクセルシートのA9セルに読み込んでいきます。
そのときの実行コードは以下の通りです。
Sub text_import_and_export()
'①テキストファイルの読み込み
Dim base_file_name As String
Dim base_fol As String
Dim act_file As String
act_file = ThisWorkbook.Name
'ファイルの保存場所
base_fol = Cells(2, 1)
'編集するファイル名
base_file_name = Cells(4, 1)
'テキストファイルの開く
Workbooks.OpenText Filename:= _
base_fol & "\" & base_file_name _
, Origin:=932, startrow:=1, DataType:=xlDelimited, textQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, Space:=True, Other:=False
'データコピー
Range(Cells(1, 1), Cells(5, 3)).Copy
'もとのファイルに戻って張り付ける
Windows(act_file).Activate
Cells(9, 1).Select
ActiveSheet.Paste
'テキストファイルを閉じる
Windows(base_file_name).Close
End Sub
このコードを実行すると以下のようになります。
さきほど紹介したテキストファイルがしっかりとA9セル以降に記入されていますね。
テキストファイルの編集まで
ここはこの記事の本筋とはほとんど関係ないため、適当にテキストを編集しています。
今回は以下のような作業を行いました。
※先ほどのコードに追記しておりますので、最後の方だけ見てください。
Sub text_import_and_export()
'①テキストファイルの読み込み
Dim base_file_name As String
Dim base_fol As String
Dim act_file As String
act_file = ThisWorkbook.Name
'ファイルの保存場所
base_fol = Cells(2, 1)
'編集するファイル名
base_file_name = Cells(4, 1)
'テキストファイルの開く
Workbooks.OpenText Filename:= _
base_fol & "\" & base_file_name _
, Origin:=932, startrow:=1, DataType:=xlDelimited, textQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, Space:=True, Other:=False
'データコピー
Range(Cells(1, 1), Cells(5, 3)).Copy
'もとのファイルに戻って張り付ける
Windows(act_file).Activate
Cells(9, 1).Select
ActiveSheet.Paste
'テキストファイルを閉じる
Windows(base_file_name).Close
'②データの編集
Cells(9, 1) = "aiueo"
Cells(10, 1) = "kakiku"
Cells(11, 1) = "sasisu"
Cells(12, 1) = "tatitu"
Cells(13, 1) = "naninu"
End Sub
ここまでのコードを実行すると以下のような状態になっています。
このテキストの編集に関しては、あなたの業務内容に応じて適宜変更してください。
編集後データの保存まで【完成形】
最後に、先ほど編集したA9セルからC13セルまでのデータを、F2セルに記載されているフォルダ内に、F4セルに記入されているファイル名としてテキストファイル形式で保存していきます。
その作業を行うコードは以下になります。
※ここも先ほどまでのコードに追記する形で記載しています。
Sub text_import_and_export()
'①テキストファイルの読み込み
Dim base_file_name As String
Dim base_fol As String
Dim act_file As String
act_file = ThisWorkbook.Name
'ファイルの保存場所
base_fol = Cells(2, 1)
'編集するファイル名
base_file_name = Cells(4, 1)
'テキストファイルを開く
Workbooks.OpenText Filename:= _
base_fol & "\" & base_file_name _
, Origin:=932, startrow:=1, DataType:=xlDelimited, textQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, Space:=True, Other:=False
'データコピー
Range(Cells(1, 1), Cells(5, 3)).Copy
'もとのファイルに戻って張り付ける
Windows(act_file).Activate
Cells(9, 1).Select
ActiveSheet.Paste
'テキストファイルを閉じる
Windows(base_file_name).Close
'②データの編集
Cells(9, 1) = "aiueo"
Cells(10, 1) = "kakiku"
Cells(11, 1) = "sasisu"
Cells(12, 1) = "tatitu"
Cells(13, 1) = "naninu"
'③テキストファイルの保存
Dim save_fol As String
Dim save_file_name As String
'編集後のファイル名
save_fol = Cells(2, 6)
save_file_name = Cells(4, 6)
Open save_fol & "\" & save_file_name For Output As #1
For i = 9 To 13
For j = 1 To 2
Print #1, Cells(i, j) & amp; vbTab;
Next
Print #1, Cells(i, j)
Next
Close #1
End Sub
※セルデータのテキストファイルへの出力方法についてもっと詳しく知りたいという方は以下の記事をご確認ください。
というわけで、このコードを実行すると、
①テキストの読み込み
②読み込んだデータの編集
③新たな場所、名前で保存
という一連の流れが完了しているはずです。
実際に処理を実行し、結果を確認してみましょう。
まずはフォルダの中身から。
最初にお見せしたフォルダの中身は以下のようになっています。
実行前は何も入っていなかった右側のフォルダに新たなファイルが追加されていますね。
また、この新たにできたファイルの中身は以下のようになっています。
VBAコードで編集した内容に、しっかりと書き換わっていることがわかると思います。
狙い通り【読み込み⇒編集⇒保存】が完了しましたね。
おわりに
というわけで今回はテキストファイルの読み込み、編集、保存という一連の流れを実行できるマクロをご紹介しました。
少し複雑だったかもしれませんが、ひとつひとつの工程でやっていることは基礎的なことばかりです。
ぜひ、少しづつスキルを習得し、このような作業はすべて自動でできるように業務効率化を図っていきましょう!
以下の記事では、似たような内容をもう少し簡単な方法でご紹介しています。
ぜひあわせてご覧ください。
【VBA】テキストファイルを指定した行だけ書き換える方法!Ver.1編集前データもそのまま
【VBA】テキストファイルを指定した行だけ書き換える方法!Ver.2編集前データ名として保存
このように、このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。
■業務の生産性を上げたい。
■早く帰って子供と遊びたい。
こんな人はぜひ他の記事も読んでみてください。
また、VBAを使ってこんなことがしたいんだけど、やり方がわからない、という悩みを抱えているかたは、お気軽にコメント欄から質問してください。
私にわかる範囲であればご協力いたしますので。(もちろん無料です。)
最後に・・・
このブログを応援してあげても良いよ、という方は以下のボタンをポチっていただけると嬉しいです。
Twitterもやっていますので、興味があれば覗いてみてください。
それではまた!!
コメント