以下のようなCSVファイルが複数あります。
VBAを実行するとファイル選択画面になり、複数のCSVファイルを選択して、
Sheet1に順番に読み込んでその際、2個目以降のCSVファイルでは1行目の項目名を破棄して、
2行目からのデータのみ繋げていくようにしたいです。
その時にG列の文字化けを防ぐため書式を文字として読み込み、
最終的にE列の2行目以降のデータにて昇順で並べ替えしたいです。
各CSVファイルには約1,500データほどあります。
一度に選択するCSVファイルは5~20個ほどです。
VBAでのプログラムを教えて頂けないでしょうか。
CSVファイル例
A B C D E F G
1 顧客コード フリガナ 氏名 敬称 郵便番号 住所1 住所2
2 000123 〇〇〇〇 〇▲ 様 256-0000 〇〇県 1-3-5
3 000124 ▲□▲〇 ◇● 様 258-3311 □▲県 2-6-9
4 000180 〇▲◇▲ ●▲ 御中 258-3325 ●□県 3-8-2
5 000186 〇●▲〇 ●〇 様 258-8236 〇■県 2-4-4
・
・
・
No.1
- 回答日時:
質問が多すぎて、またどこが分からないのか分かりませんねぇ。
http://www.moug.net/tech/exvba/0060086.html
このあたりを参考にしてみてはいかがでしょうか?
私なら
①選択ファイル数分ループ
②1ファイル目のみ全件読み込み、2ファイル目以降は一行目は読み飛ばしながら、あらかじめ用意した配列変数に入れる
③あとは読み込んだファイルをシートに出力
④書式やソートなどを最後に。
こんな感じでしょうか…。
返事が遅くなり申し訳ありません。
ご指摘の通り、内容が複雑すぎてました。
ご提案内容を参考にもう一度自分で考えてみます。
ご回答ありがとうございました。
No.2
- 回答日時:
VBA使わないでやるやり方です。
(ぜんぜん質問の趣旨と違っててごめんなさい)1.csvファイルをひとつのフォルダにまとめる。例えばc:\work
2.コマンドプロンプトを開く
3.上記のフォルダに移動する。 (cd c:\work)
4.コピーコマンドでcsvをひとつのテキストファイルにまとめる。(copy *.csv csvfile.txt)
5.できたテキストファイルをExcelで開く。列の書式を指定する。
6.ソートして、重複するヘッダ項目の行を削除する。
No.3ベストアンサー
- 回答日時:
まあ、こんなところでしょうか?
ファイル選択・ダイアログは、マルチセレクトですから、複数のファイルを選べます。
'//標準モジュール
Sub ImportCSV_Sort()
Dim Fnames As Variant
Dim fn As Variant
Dim FNo As Integer
Dim TextLine As String
Dim i As Long, j As Long, b As Long
Dim buf
Dim flg As Boolean
Dim LastRow As Long
Fnames = Application.GetOpenFilename _
("CSVFile (*.csv), *.csv", 1, "ファイルインポート", , True)
If VarType(Fnames) = vbBoolean Then Exit Sub
For Each fn In Fnames
b = Cells(Rows.Count, 1).End(xlUp).Row
If b > 2 Then flg = True
'--
FNo = FreeFile()
Open fn For Input As #FNo
If b = 1 Then
i = 0 '先頭から
Else
i = 1
End If
Do While Not EOF(FNo)
Line Input #FNo, TextLine
buf = Split(TextLine, ",")
For j = 1 To UBound(buf) + 1
If j <> 7 Then
Cells(b + i, j).Value = buf(j - 1)
Else
Cells(b + i, j).Value = "'" & buf(j - 1) 'プレフィックス文字列書式
End If
Next j
If flg And i = 1 Then
i = 0 '行を飛ばす
flg = False
End If
i = i + 1
Loop
Close #FNo
Next fn
If MsgBox("ソートしますが、よろしいですか?", vbOKCancel) = vbCancel Then Exit Sub
ActiveSheet.Sort.SortFields.Clear
With ActiveSheet.Range("A1").CurrentRegion
.Sort Key1:=.Cells(1, 5), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, SortMethod:=xlPinYin
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Excel VBAでの複数のCSVファイルの読み込みとソート
Excel(エクセル)
-
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
大量のCSVデータを1つのエクセルデータにまとめる方法について
Excel(エクセル)
-
-
4
CSVファイルの指定列だけを読み込んでEXCELに表示したい
Excel(エクセル)
-
5
複数のcsvファイルを1つのEXCELファイルにマージするVBAを教えてください
Excel(エクセル)
-
6
【VBA】複数CSVの特定範囲を1つのワークシートにコピー/ペーストするコードの修正
Visual Basic(VBA)
-
7
エクセルでエラーが出て困っています。
Excel(エクセル)
-
8
VBAでcsvファイルを読み込んで並び順を変える方法
その他(プログラミング・Web制作)
-
9
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
10
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
11
【VBA初心者】同じフォルダ内のcsvファイルを1つのシートに縦に並べる
Excel(エクセル)
-
12
CSVファイルの結合(重複データは削除。出来ればエクセルのマクロで。)
Excel(エクセル)
-
13
【ExcelVBA】300万件越えCSVから条件を満たす行だけ抽出するには?
Visual Basic(VBA)
-
14
【Excel VBA】取り込んだファイルのファイル名を取得するには?
Visual Basic(VBA)
-
15
ExcelVBAでPDFを閉じるソース
その他(Microsoft Office)
-
16
複数のCSVファイルを横に並べてひとつのエクセルファイルへ結合する方法
Excel(エクセル)
-
17
csvファイルを列数ごとに分割するExcelマクロが書けずに困っています
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの指数を無効にしたい
-
エクセルファイルの特定セルに...
-
複数のcsvファイルを1つのEXCEL...
-
【エクセル VBA】CSVファイルの...
-
VBAで一定期間の名簿を検索、抽...
-
【マクロ】その時、その時で変...
-
フォルダ内の全ブックのシート...
-
VBAに詳しい方教えてください。
-
【ExcelVBA】クエリの更新とピ...
-
「開いているすべてのブック」...
-
エクセルファイルを自身のファ...
-
エクセルのマクロについて教え...
-
Powerpointでランダムな数字の...
-
cellsで特定の離れた範囲を選択...
-
AccessからExcelマ...
-
マクロの有効化するダイヤログ...
-
ExcelVBAで今開いているユーザ...
-
エクセルでツールバーに「縮小...
-
Excelファイルがxslからxslmに??
-
Pictures.Insertメソッド⇒Shape...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの指数を無効にしたい
-
複数のCSVファイルを横に並べて...
-
excelインポート時の「実行時エ...
-
「ほかのアプリケーションを無...
-
大量のCSVデータを1つのエ...
-
VBAでCSVの1行目だけを書き換え...
-
CSVファイルの結合(重複データ...
-
複数のcsvファイルを1つのEXCEL...
-
二つのCSVファイルを照らし合わ...
-
datファイル→csvファイル→datフ...
-
EXCELにcsv形式の外部データを...
-
VBAでユーザーフォーム上に参照...
-
【VBA初心者】同じフォルダ内の...
-
【エクセル VBA】CSVファイルの...
-
EXCELLの動きが遅い
-
複数個のascファイルを1つ...
-
複数の同じ様式のエクセルデー...
-
Excel VBAを使った複数のCSVフ...
-
破損したExcelファイルの内容を...
-
Accessにエクセルからデータを...
おすすめ情報