
ファイルサイズの大きいCSVファイルを全て読み込むと、
Excelファイルが重くなってしまいます!

Excelファイルの肥大化を防ぐために
・必要なデータのみを読み込む
ようにしましょう!

CSVファイルを開く際の文字コードにより、
読み込み方法を使い分けましょう!

列を指定したCSVファイルの読み込みについては、
以下の記事をご確認ください!
※不要な列を読み込まないようにできます。
文字コード「Shift_JIS」で読み込む場合
文字コード「Shift_JIS」でCSVファイルを読み込む場合は、特に考慮不要のためシンプルに
・Openステートメント
を使用します。
ここでは例として、
・デスクトップ配下のファイル「sample_shift_jis.csv」から
・文字列「みかん」が含まれている行のみを
・シート「sample」へ
・文字コード「Shift_JIS」で読み込み
をします。

Option Explicit
Sub sample()
'読み込むCSVファイル
Const CSV_FILE As String = "C:\Users\user\Desktop\sample_shift_jis.csv"
'出力する開始行を指定
Const START_ROW As Long = 2
'出力する列を指定
Const TARGET_COLUMN As Long = 2
Dim row As Long
Dim ws As Worksheet
Dim fileNo As Long
Dim line As String
'開始行を設定
row = START_ROW
'出力するシートを設定
Set ws = Worksheets("sample")
'使用可能なファイル番号を取得
fileNo = FreeFile
'開く
Open CSV_FILE For Input As #fileNo
'最終行まで繰り返し
Do While Not EOF(fileNo)
'次の行を読み込む
Line Input #fileNo, line
'対象文字列が含まれている場合は出力
If line Like "*みかん*" Then
ws.Cells(row, TARGET_COLUMN) = line
row = row + 1
End If
Loop
'閉じる
Close #fileNo
End Sub
上記のVBAコードの実行により、
・特定の文字列(みかん)を含む行のみを、
・シートへ読み込む
ことが出来ました。

文字コード「UTF-8」で読み込む場合
「Openステートメント(=Shift_JIS)」で読み込んだ際に、文字化けしてしまうことがあります。
文字化けすると、「特定の文字列」が含まれている/いないを判定できません。
「Openステートメント(=Shift_JIS)」で読み込んだ際に文字化けが発生した場合は、文字コード「UTF-8」で読み込みましょう。
文字コード「UTF-8」でCSVファイルを読み込む場合は、
・ADODB.Stream
を使用します。
※「ADODB.Stream」は文字コードの指定ができるため。
ここでは例として、
・デスクトップ配下のファイル「sample_utf8.csv」から
・文字列「みかん」が含まれている行のみを
・シート「sample」へ
・文字コード「UTF-8」で読み込み
をします。

Option Explicit
Sub sample()
'読み込むCSVファイル
Const CSV_FILE As String = "C:\Users\user\Desktop\sample_utf8.csv"
'出力する開始行を指定
Const START_ROW As Long = 2
'出力する列を指定
Const TARGET_COLUMN As Long = 2
Dim row As Long
Dim ws As Worksheet
Dim line As String
'開始行を設定
row = START_ROW
'出力するシートを設定
Set ws = Worksheets("sample")
With CreateObject("ADODB.Stream")
'開く
.Open
'文字コードに「UTF-8」を指定
.Charset = "UTF-8"
'改行コードに「adCRLF」を指定
.LineSeparator = -1
'ファイル名を指定
.LoadFromFile = CSV_FILE
'最終行まで繰り返し
Do While Not .EOS
'次の行を読み込む
line = .ReadText(-2)
'対象文字列が含まれている場合は出力
If line Like "*みかん*" Then
ws.Cells(row, TARGET_COLUMN) = line
row = row + 1
End If
Loop
'閉じる
.Close
End With
End Sub
上記のVBAコードの実行により、
・特定の文字列(みかん)を含む行のみを、
・シートへ読み込む
ことが出来ました。


セル内の文字列をカンマ区切りで分割したい場合は、
以下の記事を参照してください!
参考①
以下の方法でも同様のことができます。
※こちらの方法は「1行目の見出し(項目名)」を取得できるため、より良い方法かもしれません。
①CSVファイルを単純に読み込んで
②その後、オートフィルタを利用して不要な行を削除
詳細は以下の記事をご確認ください。
●CSVファイルを単純に読み込む
●オートフィルタを利用して不要な行を削除
参考②
上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。
●「Openステートメント」
●「ADODB.Stream」