複数のCSVを読み込み、一つにまとめる処理をVBAにて行っております。
(その他処理も行っておりますが、上記の処理のみ抜粋しております。)
以前ご指摘を受けたのですが、複数のCSVを一行づつ読み込むと時間がかかってしまうため、
コードを書き換えたいと思っております。
詳しい方、お手数ですが以下のコードをどのように編集すればよろしいでしょうか?
ご教授ください。
また、CSVを読み込む際、3列目に特定のワードが入っている行のみを抜粋したいとも考えているのですが、
こちらもわかる方おられましたらご教授ください。
------------------------------------
Sub LoadFiles() 'CSVファイルの読み込み
Dim CsvFileName As Variant
Dim Li As String
Dim Bf() As String
Dim r As Long
Dim ShMain As Worksheet
Dim FlNo As Integer
Dim FFlNo As Integer
Worksheets("Sheet1").Activate
With ThisWorkbook 'シート&パスの設定
Set ShMain = .Worksheets("Sheet1")
ChDrive .Path
ChDir .Path
End With
'複数のファイルの選択を可に設定
CsvFileName = Application.GetOpenFilename _
(filefilter:="CSVファイル(*.csv),*.csv", _
Title:="CSVファイル選択", MultiSelect:=True)
' If VarType(CsvFileName) = vbBoolean Then Exit Sub 'キャンセル時の処置
If VarType(CsvFileName) = vbBoolean Then End 'キャンセル時終了
r = 1 '行の初期値
For FlNo = 1 To UBound(CsvFileName) 'ファイル数分ループ
FFlNo = FreeFile '---使用可能なファイル番号取得
Open CsvFileName(FlNo) For Input As #FFlNo
Do Until EOF(FFlNo) '最終行までループ
Line Input #FFlNo, Li '一行読み込み
Bf = Split(Li, """,""") 'カンマで分割し配列に代入
If UBound(Bf) >= 0 Then '空白行の処理を飛ばす
With ShMain '1行分のデータをセルに出力
.Range(.Cells(r, 1), Cells(r, UBound(Bf) + 1)).Value = Bf
End With
End If
r = r + 1
Loop
Close #FFlNo
Next FlNo
End Sub
--------------------------------------
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>その他処理も行っておりますが、
その他が示す物は、CSVからの読み込みに関してとは全く関係のない内容なのでしょうか?
仮に1行ずつ読み込めば処理できている内容であるなら、纏めて読み込むと処理手順が変わりそうですし。
あと『空白行の処理を飛ばす』と言うのから、CSVファイルの中身がどんな感じなのか予測できないですよね。
なので『纏めて読み込む』コードに変えても結局1行ずつ調べなきゃいけないのかどうかが不明かな?
No.1
- 回答日時:
最後の
>また、CSVを読み込む際、3列目に特定のワードが入っている行のみを抜粋したいとも考えているのです
については、
ADOでCSVの読み込み(SQL)
http://excel-ubara.com/excelvba5/EXCEL118.html
SQL文で絞り込める『かも』しれませんね。
ただファイルが多いなら『結局時間がかかる』可能性は否定できないですし・・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
VBAでCSVファイルの特定行を書...
-
openした後、closeしないでプロ...
-
JavaでCSVファイルを高速に読む...
-
__DATA__の意味
-
vNoteのBODY部の取得(長めです)
-
MATLABでのwhile文の条件について
-
VB6.0でDB接続する際に切断時の...
-
CSVが可変長の場合の検索方法
-
拡張子 ”log” と ” dat” の違い
-
ExcelをCSV書き出す場合のシー...
-
プログラミング(流れ図とコー...
-
バッチファイルの作り方(CSV→...
-
close()で例外が投げられる理由
-
batファイルでrenameができませ...
-
VBAコードを張り付け後のエクセ...
-
ListBoxのデータを高速でファイ...
-
至急お願いします。C言語で.img...
-
タブの色を変更する方法
-
vba dir の相対パス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
openした後、closeしないでプロ...
-
VBAでCSVファイルを途中行まで...
-
VBAで巨大なファイルの途中から...
-
ReadLineでの読み出し行を指定する
-
JavaでCSVファイルを高速に読む...
-
MATLAB グローバル変数の宣言
-
エクセルVBA コードが同じでも...
-
Perlの変数に文字数制限(容量...
-
perlで、後ろの行を読んで、前...
-
C言語でのファイルのデータ更...
-
2つのCSVファイルをマッチング
-
VB6.0でDB接続する際に切断時の...
-
CSVが可変長の場合の検索方法
-
perlで容量の大きいCSVファイル...
-
1ファイルずつ読み込みたい
-
VBScriptでファイル保存先のデ...
-
perl で googleAPIを呼び出す...
-
C#でCSVファイルを逐一更新したい
おすすめ情報