• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のCSVファイルを一つのブックに)

複数のCSVファイルを一つのブックに

このQ&Aのポイント
  • エクセルvbaで複数のCSVファイルを一つのブックにシートを分けて取り込む方法を教えてください。
  • 複数のCSVファイルを一気に取り組みたい、一つのブックにCSVファイル別にシートを分けたい、文字化けを解消したいという問題を解決する方法を教えてください。
  • VBA初心者ですが、エクセルvbaで複数のCSVファイルを一つのブックにシートを分けて取り込む方法を教えてください。また、文字化けを解消する方法も教えていただきたいです。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

質問内容のコードを書いてみました。メモ帳でUTF8ファイルを作って、Excelで読む(ダブルクリック)と文字化けし、回答のマクロを実行すると正常に読み込まれることを確認しました。 質問者様のファイル内容が分からないですが、参考に回答します。 下記マクロの「fPath」フォルダーにある複数のCSVファイルを読み込んで、「CSVshtName+番号」のシートを作成し、データを読み込みます。 処理の流れは、 既にある「CSVshtName+番号」のシートを削除   ↓ 1つ目のCSVファイルを読み込む   ↓ 出力用の「CSVshtName & 1」シートを作成   ↓ CSVファイルのデータをシートに貼り付け   ↓ 2つ目のファイルがあれば読み込む。以下繰り返し。 シート削除の確認や、画面更新を止めて、最後に有効に戻しています。 標準モジュールに貼り付けます。当方win10、Excel2010です。 ご参考に。 Sub CSV2XLSX()  Dim ws As Worksheet       '// ワークシート  Dim fPath As String       '// ファイルのパス  fPath = "N:\履歴\Work"  Const CSVshtName = "CSV_Sheet" '// CSV出力シート名    Application.ScreenUpdating = False  Application.DisplayAlerts = False    '// 既にあるCSV出力用シートを削除  For Each ws In Sheets    If Left(ws.name, 9) = CSVshtName Then     ws.Delete    End If  Next  '// CSVファイルを読む  Dim queryTb As QueryTable    Dim fExp As String     '// 拡張子  Dim fName As String    '// ファイルフルパス  Dim idxCSVSheet As Integer '// CSVファイルの番号  fExp = "*.csv"    fName = Dir(fPath & "\" & fExp)  While fName <> ""   idxCSVSheet = idxCSVSheet + 1   Worksheets.Add(After:=Worksheets(Worksheets.Count), Count:=1). _           name = CSVshtName & idxCSVSheet   Set ws = ActiveSheet   Set queryTb = ws.QueryTables.Add(Connection:="TEXT;" & _            fPath & "\" & fName, _            Destination:=ws.Range("A1")) '// CSVファイルを開く   With queryTb     .TextFilePlatform = 65001    '// 文字コード     .TextFileParseType = xlDelimited '// 区切り文字     .TextFileCommaDelimiter = True  '// カンマ区切り     .RefreshStyle = xlOverwriteCells '// 書き込む方式     .Refresh             '// データ表示          .Delete             '// CSVとの接続解除   End With      fName = Dir()  Wend    Application.DisplayAlerts = True  Application.ScreenUpdating = True End Sub

wonychoi
質問者

お礼

ありがとうございます。感動的でした。マクロが動いた際には、思わず「おぉ!美しい!」と叫びました。本当にありがとうございます。

その他の回答 (1)

回答No.1

関連するQ&A