【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が頭についている連番ファイルが入っています。

桁数揃えの連番名ファイルが保存されているフォルダ

 

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

連番名フォルダ内のデータ一覧

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

 

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

 

スポンサーリンク

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

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

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

連番ファイルを読み込む際に必要なデータをエクセルに入力している様子

最終的には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″ 】)という構図になっていることが確認できると思います。

 

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

サンプルコードを実行した後の結果

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

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

www.higashisalary.com

 

スポンサーリンク

おわりに

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

 

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

 

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

 

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

 

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

■業務効率を上げたい。

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

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

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

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

最後に・・・

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

↓ 応援ボタン

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

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

それではまた!!

コメント

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