• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のtxtの特定部分を抽出し、一つのxlsファイルにまとめたいです。)

複数のtxtから特定部分を抽出し、一つのxlsファイルにまとめたい

このQ&Aのポイント
  • 複数のtxtファイルから特定の情報を抽出し、一つのxlsファイルにまとめる方法を教えてください。
  • 現在、複数の同じ体裁のtxtファイルを持っています。これらのファイルにはタブで区切られたデータが含まれており、CSVファイルに変換しました。
  • エクセルで開いたCSVファイルには、必要な情報がB601からB802に入っています。これらの情報をまとめたxlsファイルを作成したいです。VBAマクロで解決できる方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mo2yakko
  • ベストアンサー率54% (30/55)
回答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 とかでカラム位置を求めるしかないかもです。

oilshift
質問者

お礼

さらにmo2yakkoさんのアドバイスを取り入れた結果、 なんとか狙い通りのマクロを組むことが出来ました! 本当にありがとうございます!

oilshift
質問者

補足

ありがとうございます! 実は質問の後、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

関連するQ&A