VBAの質問です。
CSVカンマ区切りで取り込んだいくつかのファイルを一つのエクセルファイルにまとめたいと思っています。
例えば、A,B,C,D,Eという名前(毎回取り込むファイル名は異なります)のものをCSVカンマ区切りで読み込むと、エクセルファイルがそれぞれ作られます。これをB-Eのデータ(タイトル行を除いて)をAのファイルに貼り付けたいと考えています。
A-Eに入っているデータの列数は共通していますが、行数が異なるので、Aファイルのこの行にBのデータを入れるなどの指定ができません。
上記をVBSで作る場合の具体的なソースを教えて頂ければと思います。
どなたかご教示よろしくお願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは
CSVデータ、文字コードなどわかりませんが、
前に作ってデータ加工用にたまに使うプロシージャがあるので参考に掲示しますね
>A-Eに入っているデータの列数は共通していますが、行数が異なるので、A>ファイルのこの行にBのデータを入れるなどの指定ができません。
差し込みたいと言う事でしょうか?
不明ですが、全部抽出して加工(ソート)する方法はどうでしょう。
各CSVファイルを同じフォルダに入れておく
VBAからダイアログでフォルダを選択
中にあるすべてのCSVファイルをシートインデックス1のシートに書き出します。
ごめんなさい、タイトル行は含んでいます。
見出しが特定文字なら、分岐してください。例えば
カラム1に № や ID のような一意の各ファイル共通文字があれば良いのですが、、、無理かな、、
下記の書き方だと少し工夫しなくてはなりませんが、1行目を飛ばすとかも、
おまけで
すべてを抽出したあとC列をキーにソート(コメントアウト)
ソート後 C列E列をキーに重複データ行を削除します。(コメントアウト)
テストする場合は、インデックス1のシートにしているので新規ブックで試される方が良いと思います。
最終的な結果やCSVが分からないのと、ご質問の回答用に書いていないので手直しが必要と思いますし、違う書き方の方だ合理的かも知れませんが、
参考程度でどうぞ
Sub Sample()
Dim folPath As String, filePath As String
Dim fNumber As Integer, i As Long
Dim buf As String, lineAry As Variant
fNumber = FreeFile
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = CreateObject("WScript.Shell").SpecialFolders("desktop")
If .Show = True Then folPath = .SelectedItems(1)
End With
If folPath = "" Then
Exit Sub
Else
folPath = folPath & "\"
End If
filePath = Dir(folPath & "*.csv")
i = Worksheets(1).Cells(Rows.Count, "A").End(xlUp).Row
Application.ScreenUpdating = False
Do While filePath <> ""
Open folPath & filePath For Input As #fNumber
With Worksheets(1)
Do Until EOF(1)
Line Input #fNumber, buf
If buf <> "" Then
lineAry = Split(buf, ",")
' If lineAry(0) <> "№" Then
Worksheets(1).Cells(i, "A").Resize(1, UBound(lineAry) + 1) = lineAry
i = i + 1
' End If
End If
Loop
Close #fNumber
End With
filePath = Dir()
Loop
' 'データソート C列キー
' With ActiveWorkbook.ActiveSheet.Sort.SortFields
' .Clear
' .Add Key:=Range("C1"), DataOption:=xlSortTextAsNumbers
' End With
' With ActiveWorkbook.ActiveSheet.Sort
' .SetRange Range("A1").CurrentRegion
' .Header = xlNo
' .MatchCase = False
' .Orientation = xlTopToBottom
' .SortMethod = xlPinYin
' .Apply
' End With
''重複データ行削除 C列 E列キー
' ActiveSheet.Range("A1").CurrentRegion.RemoveDuplicates Columns:=Array(3, 5)
Application.ScreenUpdating = True
End Sub
No.1
- 回答日時:
>例えば、A,B,C,D,Eという名前(毎回取り込むファイル名は異なります)~Aのファイルに貼り付けたいと考えています。
毎回取り込むファイル名が違うのにどうしてAに集約と決まるのでしょうか?
Aファイルを示す定義とは?
VBAなのかVBSなのか不明ですが、VBSなら知恵袋にベテランさんがいましたね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) エクセルで、ファイルの分割 と ファイルの集約 1 2022/08/28 08:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
共有フォルダに誰が何にアクセ...
-
Access VBA を利用して、フォル...
-
特定のエクセルファイルを起動...
-
拡張子が「cda」のファイルを聞...
-
月が変わったら自動でシートが...
-
Batch: フォルダ内の特定のファ...
-
excelを共有ファイルにすると行...
-
【アクセス】「ほかのユーザー...
-
MATLABで波形を一周期ごとに区...
-
VBAでCSVファイルが使用中かど...
-
【ExcelVBA】FreeFile関数とGet...
-
tmpファイル なぜできる?削除...
-
事務の派遣で働いています。多...
-
ファイルの途中に文字列を挿入
-
AccessVBAで作成したExcelファ...
-
C言語でのこぎり波を作る方法
-
ExcelVBAでの標準偏差の求め方
-
オンラインでのEXCELデータ共有...
-
Access2003 デザインモードで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共有フォルダに誰が何にアクセ...
-
【Excel】[Expression.Error] ...
-
特定のエクセルファイルを起動...
-
Batch: フォルダ内の特定のファ...
-
VBAでCSVファイルが使用中かど...
-
月が変わったら自動でシートが...
-
tmpファイル なぜできる?削除...
-
AccessVBAで作成したExcelファ...
-
Access VBA を利用して、フォル...
-
(Excelマクロ)datファイルをエ...
-
事務の派遣で働いています。多...
-
Excel VBA 処理後データが重た...
-
excelを共有ファイルにすると行...
-
【アクセス】「ほかのユーザー...
-
XMLデータを変換し印刷する方法
-
CSVの項目行を削除して一つのフ...
-
mdbファイル フォームを開くと...
-
社内Excel共有ブックでの保存ト...
-
ファイルの途中に文字列を挿入
-
拡張子が「cda」のファイルを聞...
おすすめ情報
>Aファイルを示す定義とは?
説明が不十分でした。
A-Eファイルには番号とある一定のアルファベットがついています。例えば、0123456.AB, 0123457.AB。
この番号の1番小さいものと定義することはできますでしょうか?
A-Eを新規ファイルにまとめるという形でも構いません。新規ファイルの場合、A-Eのファイルの何かのタイトル行だけコピーし、残りのファイルはタイトル行を除くといったことも可能になりますでしょうか?
参照したサイトでは全てタイトル行までコピーするものしか見つけられませんでした。
https://www.ex-it-blog.com/Book-Excel-Macro
>VBAなのかVBSなのか不明ですが、VBSなら知恵袋にベテランさんがいましたね。
勉強不足でこちらの区別がついておりませんでした。