ヒガサラblog

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

ヒガサラblog

【VBA】連番ファイルの読み込み!001,002など複数の0を付ける方法!

f:id:yshgs_elec:20201026221722j:plain

「連番ファイル名のデータを一括操作したい。」

「でも連番の前に0がついててうまく処理できない。」

この記事ではこんな悩みを一瞬で解決します。

 

file001.txt, file002.txt, file003.txtなどの連番の前に複数の0が付け加えられているファイルは多いですよね。

そんなファイルを読み込む際、連番の前についている0の処理に苦戦しているのではないでしょうか?

 

この0の処理については、あるスキルを覚えておくだけで一瞬で解決できるようになります。

もちろん、0が何個ついていようが、連番の数字が2桁、3桁と増えていっても問題なく使えるスキルです。

 

覚えておいて損はないスキルです。

ぜひ一緒にエクセルを開いて実践してみましょう。

 

それではさっそくやっていきます!

 

頭に複数の0がついた連番作成方法

まず始めに、頭に複数の0がついた連番作成スキルについて解説しておきましょう。

 

今回使用する連番作成スキルは以下のようなものです。

連番作成スキル:Format

使用方法

Format(i,"連番桁数分の0")

構成要素の説明

i : 連番作成時の整数変数

連番桁数分の0 : 三桁連番なら000 四桁なら0000

 

とはいえ、これだけでは何のことかよくわからないと思いますので、実際の使用例を見ていきましょう。

例題説明:やることの共有化

使用例に移る前に、この記事で行っていく作業内容を共有化しておきましょう。

(その方が理解が深まるはずです。)

今回は、連番のファイル名がついているテキストファイルをエクセルシート上に順番に読み込んでいくという作業を行ってみようと思います。

 

もう少し具体的に説明しておきます。

以下のようにあるフォルダの中に、複数の0が頭についている連番ファイルが入っています。

f:id:yshgs_elec:20201026213924j:plain

 

そしてこれらのファイルには以下のように適当なデータが入力されています。

f:id:yshgs_elec:20201026214129j:plain

 

これらのデータを連番作成スキルを使って、順番にエクセルシートに読み込んでいきたいと思います

 

やりたいことのイメージがつかめたところで、早速本体に入っていきましょう。

事前準備:エクセルシートを整える

今回はエクセルシート上に、ファイルの置き場所と連番前後のファイル名を記述する形にしています。

※このあたりのフォルダのパスやファイル名の指定については、あなたの状況に応じて適宜変更してください。

f:id:yshgs_elec:20201026214350j:plain

最終的にはA8セル以降に先ほどの連番ファイルたちを読み込んでいくことになります。 

 

事前準備はここまでです。

ここからは実際実行コードを紹介しておきます。

連番作成スキルの実際の使用例

 先ほど紹介した一連の作業を自動化するVBAコードは以下のようになります。

 

Sub open_text()
'変数の方を宣言
Dim base_file As String
Dim read_file_path As String
Dim i As Integer

'マクロファイル名を記憶させる
base_file = ThisWorkbook.Name
'テキストファイルの場所を記憶させる
read_file_path = Cells(2, 1)
'連番読み込み処理の開始 For i = 1 To 4 read_file_name = Cells(5, 1) & Format(i, "000") & ".txt" Workbooks.OpenText Filename:= _ read_file_path & "\" & read_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(1, 1)).Copy 'もとのファイルに戻って張り付ける Windows(base_file).Activate Cells(i + 7, 1).Select ActiveSheet.Paste 'テキストファイルを閉じる Windows(read_file_name).Close Next End Sub

 

read_file_name = Cells(5, 1) & Format(i, "000") & ".txt"

↑の部分が今回のスキル紹介の最も重要な部分になります。

最初に紹介しように、Format( 【整数変数】, 【"連番桁数分の0" 】)という構図になっていることが確認できると思います。

 

そしてこのコードを実際に実行すると以下のように、しっかりとエクセルシート上にテキストファイルの中身が読み込まれています。

f:id:yshgs_elec:20201026220051j:plain

 

というわけで、しっかりと連番作成について理解いただけたのではないでしょうか?

 

※今回は連番作成スキル紹介なので、詳細は割愛しましたが、テキストファイルの読み込みについてもっと知りたい方は、以下に記事を参照ください。

www.higashisalary.com

終わりに

 というわけで今回は、頭に複数の0がついた連番ファイルの読み込み方法について解説してきました。

このスキルはファイルの読み込みだけでなく、フォルダやファイル作成などにも応用できるスキルです。

また、今回は001から004という非常に少ないファイルしか扱っていませんが、010,011というように桁が増えたり、0001,0002というように0が増えても対応ができるものになっていますので、そのあたりの動作についても確認してみると理解が深まると思います。

ぜひご自身でいろいろといじってみてはいかがでしょうか?

 

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

■業務効率を上げたい。

■残業を少しでも減らしたい。

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

 

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

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

 

最後に・・・

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

 ↓ 応援ボタン

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

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

 

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

それではまた!!

 

 オススメ記事

www.higashisalary.com

www.higashisalary.com