
複数のtxtの特定部分を抽出し、一つのxlsファイルにまとめたいです。
皆様のお知恵をお借りできませんでしょうか?
現在約1000行からなる同一体裁のtxtファイルを多数所持しております。
中身はタブで区切ってあったので、タブをコンマに変換し、CSVファイルを作りました。
これらのファイルを15~20ファイルごとにフォルダ分けしてあります。
このCSVファイルをエクセルで開いたところ、
うちB601:B802に必要な情報が入っていました。
この情報を以下のような要領で入力したまとめxlsファイルを作りたいです。
A列
1行目 一つ目のCSVのファイル名(フォルダ内のCSVを名前順で並べたときに1番上のもの)
2行目~203行目 一つ目のCSVのファイルのB601:B802
B列
1行目 2つ目のCSVのファイル名(名前順で2番目のもの)
2行目~203行目 2つ目のCSVのファイルのB601:B802
(以後15~20ファイル分、O~T列まで。20ファイル以上にも対応できると嬉しいです。)
このxlsファイルを最低でも20個作る予定です。
VBAマクロできっと出来るはずと思い、昨日9時間ほど調べたのですが、習得には至ってません。
例えば1つのCSVのB601:B802をコピーするマクロは作成できますが、
それをまとめファイルのA2に貼り付け、
まとめファイルのA1にCSVのファイル名を挿入し、
さらに同様の抽出をフォルダ内の別のファイルに連続して行い、
挿入部位が被らないようにまとめファイルB列以降に貼り付けさせることができません。
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv252.htmlや
http://oshiete1.goo.ne.jp/kotaeru.php3?q=359726や
http://www.excel.studio-kazu.jp/kw/2008042818000 …などを
応用できないか試してみましたが結局よくわからない状態です。
おそらくこちらの説明が不十分で答えにくい質問なのではないかと思いますが、
どなたかお答えいただければ幸いです。
また、勉強してから出直せ!的なことであれば勉強したいとおもいますので、
お勧めの書籍、サイトを教えていただければ幸いです。
どうかよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
処理する順番が決っていないのでしたら
DIR関数とループを上手く使えば良いかもです。
(手抜きなサンプルですが)
strFileName = Dir("C:\TEMP\*.CSV", vbNormal)
i = 0
Do While strFileName <> ""
'ファイル開く(省略 ※エラーなら抜けないとですが)
'コピー(省略)
'ペースト
Sheets("コピー先").range("A2").offset(0,i).pastespecial
i = i + 1
'次のファイル名
strFileName = Dir()
Loop
決っていないなら
iColumn = .Cells(iRows, .Columns.Count).End(xlToLeft).Column
if .Cells(1,iColumn) = "" then
iColumn = iColumn + 1
end if
とかでカラム位置を求めるしかないかもです。
この回答への補足
ありがとうございます!
実は質問の後、http://www.moug.net/tech/exvba/0060001.htmを参照して
自分なりに作ってみましたが、動きません。
(エラーもはき出さず、白紙のエクセルのまま。)
正直どこがダメなのか、皆目検討がつきません。
mo2yakkoさんのアドバイスをどのように生かせばよいのかもわかりません。
どなたかご教授願えませんでしょうか?
Sub sample()
Dim myPath As String
Dim myFName As String
Dim FCnt As Integer
ThisWorkbook.Activate '使うブックをアクティブに
myPath = ActiveWorkbook.Path 'そのパスを定義
ChDir myPath 'そのパスのフォルダに移動
FCnt = 0 '取得ブック数をカウントするための変数を初期化
myFName = Dir("*.csv") 'Dir関数で最初のファイルを選択
If myFName <> "" Then 'ブックが取得できた場合
FCnt = FCnt + 1 'カウントをプラス
Workbooks.Open Filename:=myFName 'ファイルオープン
Range("B601:B802").Copy '必要部分のコピー
ActiveWorkbook.Close 'データファイルを閉じる
ThisWorkbook.Activate 'まとめブックをアクティブに
Cells(1, FCnt).Value = myFName 'まとめ一行目にファイル名を挿入
Range(Cells(2, FCnt), Cells(6002, FCnt)).PasteSpecial Paste:=xlPasteValues '二行目から値のみ貼り付け(一つのデータ終了)
Do
myFName = Dir("*.xls") 'Dir関数で次のファイルを選択
If myFName <> "" Then 'ブックが取得できた場合
FCnt = FCnt + 1 'カウントをプラス
Workbooks.Open Filename:=myFName 'ファイルオープン
Range("B601:B802").Copy '必要部分のコピー
ActiveWorkbook.Close 'データファイルを閉じる
ThisWorkbook.Activate 'まとめブックをアクティブに
Cells(1, FCnt).Value = myFName 'まとめ一行目にファイル名を挿入
Range(Cells(2, FCnt), Cells(6002, FCnt)).PasteSpecial Paste:=xlPasteValues '二行目から値のみ貼り付け(一つのデータ終了)
Else
Exit Do
End If
Loop
End If
End Sub
さらにmo2yakkoさんのアドバイスを取り入れた結果、
なんとか狙い通りのマクロを組むことが出来ました!
本当にありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
このQ&Aを見た人はこんなQ&Aも見ています
-
テキストファイルから指定行をExcelに抽出したい。
Excel(エクセル)
-
【VBA】テキストファイルから特定の文字列を抽出して、エクセルに出力する
Excel(エクセル)
-
複数のテキストファイルをエクセルに一括で取り込みたい
Excel(エクセル)
-
-
4
テキストファイルから特定の文字列が入った行を取得したいです。 例えば下記のような文が記載されたテキス
Visual Basic(VBA)
-
5
複数のテキストファイルをexcelでそれぞれ別シートに書き出したい
Excel(エクセル)
-
6
txtファイルから特定の文字列が書かれた行だけを取得や削除するソフト
フリーソフト
-
7
テキストファイルの一部分を抽出する方法について
Visual Basic(VBA)
-
8
【VBA】複数のtxtファイルから特定区間の複数行を呼び出し、エクセルにまとめたい。
Visual Basic(VBA)
-
9
[エクセル VBA]テキストファイルから特定の行のみを抜き出したい 下記のようなテキストファイルから
Excel(エクセル)
-
10
同一フォルダにある複数のテキストファイル(メモ帳)を一括でエクセルに取り込みたいです。
Visual Basic(VBA)
-
11
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
12
【至急】エクセルで複数のファイルから文字列を検索、行全てを抽出する
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
エクセルでファイルを開かずに...
-
Excel 2枚目のブックが開かな...
-
CPU使用率が100%となっ...
-
複数のtxtの特定部分を抽出し、...
-
パワーポイントをエクセルファ...
-
マルチモニター設定をしても2画...
-
エクセル 列の最大数はIV?
-
エクセルで「500時間」を「何日...
-
EXCELで上書き保存しないと反映...
-
エクセルで作った書類の作成者...
-
エクセルにクリックすると指定...
-
エクセルのSUM関数について
-
エクセルでファイルを閉じても...
-
メール添付されているファイル...
-
エクセルで文字の色を変えよう...
-
~$ファイル名のファイルが出現...
-
エクセルの添付ファイルに記入...
-
エクセルへコピーペーストする方法
-
メニューバーの編集がアクティ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
エクセルでファイルを開かずに...
-
CPU使用率が100%となっ...
-
Excel 2枚目のブックが開かな...
-
エクセルで他のファイルのセル...
-
エクセルのファイルが開けない
-
複数のtxtの特定部分を抽出し、...
-
マクロで別ファイルのシートコ...
-
PhotoshopでExcelのファイルが...
-
エクセルマクロ 数式【VLOOKUP...
-
VBAで集計元のファイル名を取得...
-
MATLABでcsvファイルを読み込も...
-
エクセルマクロ(vba)のFSO.Open...
-
Excel2000でフォルダを移動する...
-
文字しか入っていないのにエク...
-
複数シートを持つExcelファイル...
-
フォルダー内の特定excelファイ...
-
ファイル比較ツール
-
パワーポイントをエクセルファ...
-
エクセルで「500時間」を「何日...
おすすめ情報