質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

2回答

351閲覧

マクロを用いたテキストファイルの自動読み込み

somechan1

総合スコア17

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/10/24 09:11

前提・実現したいこと

testファイルで送られてくるデータをエクセルに取り込みたい。
そのtestデータについて、日程+付番で送られてきます。
たとえば、本日2020/10/24のデータの場合

20201024-〇
※〇:付番

これをエクセルにマクロを用いて順次取り込む場合、どのようなコーディングになるでしょうか。

dim i as long
dim path as string

for i = 〇 to 〇
path = "C:\Users\省略してます。\log.txt-i"

みたいなことをしたいのですが
その場合どのような記載になるでしょうか。

調べても分からなく、、、
アドバイス頂けると幸いです。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tatsu99

2020/10/24 09:30

20201024-〇 はファイル名ですか? 付番は1からの連番ですか? 付番の飛びはないのですか? log.txt-iとはどのような関係ですか。
somechan1

2020/10/24 09:48

ご連絡ありがとうございます。 〇はファイル名で、入る数字は連番になります。 20201024-〇 = log.txt-i という意味でした。分かりにくい表現で申し訳ございません。 宜しくお願い致します。
guest

回答2

0

任意のフォルダに存在するファイル名取得はDir関数を用いたLoopにて実現できます。
参考になるサイトを以下に紹介しますので、まずはご自身でコードを書いてみてください。
ファイルの一覧を取得する

投稿2020/10/24 09:20

TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

somechan1

2020/10/26 10:35

TanakaHiroakiさん、コメントありがとうございます。 添付頂いたファイルはブックマークし、今後活用させて頂きます。 また参考にした結果、無事に動かすことも出来ました。
guest

0

ベストアンサー

ファイル一覧を取得する2つの方法です。
ファイル一覧1は、指定フォルダ内の全ファイルを取得する方法です。
ファイル一覧2は、指定フォルダ内のファイルを名前をその都度指定して取得する方法です。

VBA

1Public Sub ファイル一覧1() 2 Dim fname As String 3 Dim folder As String 4 Dim path As String 5 Dim seq As Long 6 folder = "d:\goo\data2\" 7 path = folder & "*" 8 fname = Dir(path) 9 10 Do While fname <> "" 11 seq = seq + 1 12 Debug.Print seq, fname 13 fname = Dir() 14 Loop 15 16End Sub 17 18Public Sub ファイル一覧2() 19 Dim fname As String 20 Dim folder As String 21 Dim path As String 22 Dim seq As Long 23 Dim i As Long 24 Dim yyyymmdd As String 25 folder = "d:\goo\data2\" 26 path = folder & "*" 27 yyyymmdd = Format(Date, "yyyymmdd") 28 seq = 0 29 For i = 1 To 999 30 path = folder & yyyymmdd & "-" & i 31 fname = Dir(path) 32 If fname = "" Then Exit For 33 seq = seq + 1 34 Debug.Print seq, fname 35 Next 36 fname = Dir(path) 37 38End Sub 39

指定フォルダ内にデータが以下のようにあった場合です。
イメージ説明

ファイル一覧1の実行結果は以下の通り
イメージ説明

ファイル一覧2の実行結果は以下の通り
イメージ説明

どちらを採用するかは、あなたのほうで判断してください。
ファイル一覧1の場合は、全ファイルを処理できますが、付番の順序通りには処理できません。
ファイル一覧2の場合は、付番通りに処理できますが、歯抜けがあると、そこで打ち切られます。したがって
全ファイルが処理できない場合があります。又、当日日付を自動的に算出するので、昨日のファイルを
処理することはできません。(yyyymmddの値を直接書き換えて実行すれば可能ですが)

testファイルの内容が不明及びexcelにどのように取り込みたいのかが不明なので、一覧表示までとします。

投稿2020/10/24 13:48

tatsu99

総合スコア5470

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

somechan1

2020/10/26 10:33

tatsu99さん、コメントありがとうございます。 本日動かしてみた結果、動きました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問