ヒガサラblog

サラリーマン向けに、仕事を効率良く進めていくための方法についてご紹介しています。プログラミングから対人スキルまでを幅広く掲載中。

ヒガサラblog

【VBA】テキストファイルの読み込み⇒編集⇒保存までを一括解説!

f:id:yshgs_elec:20201006230749j:plain

数値解析などを行う場合、テキストファイルに解析条件などを記入し、コンピュータに読み込ませるという作業はよくあると思います。

 

テキストファイルを変更する際に、わざわざ

①既存のテキストを開く

②手動で数値を変更する

③ファイル名の変更する

④所定のフォルダに保存する

という非常に面倒な作業をしている人は多いのではないでしょうか?

 

この記事ではそんな一連の作業をすべて自動化する方法についてご紹介します。

初心者向けに画像多めでわかりやすく説明していきますので、ぜひ最後までごらんください。

 

さっそくやっていきます!

 

はじめに

この記事では、

①テキストファイルの読み込み方法

②テキストの編集方法

③編集データの保存方法

という3つのセクションに分けてVBAコードの解説していきます。

 

それぞれのセクションでコードを実行していきますので、どのような動きがあるのかを確認していきましょう。

単純にすべての作業を一発で実行してしまうより、あなたの理解が深まるはずです。

 

それでは実際の作業に移っていきましょう。

 

事前準備の説明

VBAコーディンに入る前に、情報を入力するためのエクセルシートを整えておきましょう。

以下の画像を参考に、

■編集前のファイルが入っているフォルダのフルパス

■編集前のファイルの名前

■編集後のファイルを保存するフォルダのフルパス

■編集後のファイルの名前

を事前に記入しておきましょう。

f:id:yshgs_elec:20201006221841j:plain

 

また今回は9行目以降にテキストファイルを張り付け、そのセル上でデータ編集を行うようにしています。

そのため貼り付け場所の基準場所も念のため記載しています。

 ※記事をわかりやすくするためですので、A8セルの記述はなくても構いません。

 

 

ちなみにこのエクセルシートに記入されているフォルダの中身は以下のようになっています。

左のフォルダの中に、これから読み込むファイル(base_file.txt)が入っています。

また、右側のフォルダが、読み込んだファイルを編集した後に、ファイルを保存する場所です。

(VBA実行前は空です。実行後、ここに新たにファイルが生成されます。)

f:id:yshgs_elec:20201006222309j:plain

 

今回読み込むテキストファイル(base_file.txt)は以下のようにデータが記入されています。

f:id:yshgs_elec:20201006223533j:plain

 

事前の説明はこのくらいにして、ここからは実際の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

 

このコードを実行すると以下のようになります。

f:id:yshgs_elec:20201006223730j:plain

 

さきほど紹介したテキストファイルがしっかりと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

 

ここまでのコードを実行すると以下のような状態になっています。

f:id:yshgs_elec:20201006224456j:plain

 

このテキストの編集に関しては、あなたの業務内容に応じて適宜変更してください。

 

編集後データの保存まで【完成形】

 ここでは、先ほど編集した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) & vbTab;
Next
Print #1, Cells(i, j)
Next
Close #1
End Sub

 

※セルデータのテキストファイルへの出力方法については以下の記事をご覧ください。

www.higashisalary.com

 

 

 というわけで、このコードを実行すると、

①テキストの読み込み

②読み込んだデータの編集

③新たな場所、名前で保存

という一連の流れが完了しているはずです。

 

実際に結果を確認してみましょう。

まずはフォルダの中身から。

このVBAコードを実行した結果、最初にお見せしたフォルダの中身は以下のようになっています。

f:id:yshgs_elec:20201006225532j:plain

実行前は何も入っていなかった右側のフォルダに新たなファイルが追加されていますね。

 

 また、この新たにできたファイルの中身は以下のようになっています。

f:id:yshgs_elec:20201006225735j:plain

 

VBAコードで編集した内容に、しっかりと書き換わっていることがわかると思います。

狙い通り【読み込み⇒編集⇒保存】が完了しましたね。

 

終わりに

 というわけで今回はテキストファイルの読み込み、編集、保存という一連の流れを実行できるマクロをご紹介しました。

少し複雑だったかもしれませんが、ひとつひとつの工程でやっていることは基礎的なことばかりです。

ぜひ、少しづつスキルを習得し、このような作業はすべて自動でできるように業務効率化を図っていきましょう!

 

このように、このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。

■業務の生産性を上げたい。

■早く帰って子供と遊びたい。

こんな人はぜひ他の記事も読んでみてください。

 

また、VBAを使ってこんなことがしたいんだけど、やり方がわからない、という悩みを抱えているかたは、お気軽にコメント欄から質問してください。

私にわかる範囲であればご協力いたしますので。(もちろん無料です。)

 

最後に・・・

このブログを応援してあげても良いよ、という方は以下のボタンをポチっていただけると嬉しいです。

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

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

 

Twitterもやっていますので、興味があれば覗いてみてください。

それではまた!!

 

 オススメ記事