例文を使って繰り返し業務を時短

【マクロ・VBA】CSVファイルをマッチングして取り込む

エクセル、マクロ、VBAでCSVファイルをマッチングしてインポートする VBA

CSVファイルのマッチング

VBAを使用して、特定のシートにCSVファイルをインポートし、特定の列のデータに基づいて取り込む方法の例です。

1.CSVファイルをインポートするために、以下のコードを使用します。

Sub ImportCSV()
    Dim filePath As String
    Dim targetSheet As Worksheet
    Set targetSheet = ThisWorkbook.Sheets("Sheet1") 'インポートするシート名を指定
  
    filePath = "C:\path\to\file.csv" 'インポートするCSVファイルのパスを指定
    With targetSheet.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=targetSheet.Range("A1"))
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True 'CSVファイルの区切り文字をカンマに設定
        .Refresh
    End With
End Sub

2.CSVファイルの特定の列のデータに基づいて、取り込むデータをフィルタリングするには、以下のようにコードを追加します。

Sub ImportCSV()
    Dim filePath As String
    Dim targetSheet As Worksheet
    Set targetSheet = ThisWorkbook.Sheets("Sheet1") 'インポートするシート名を指定
  
    filePath = "C:\path\to\file.csv" 'インポートするCSVファイルのパスを指定
    With targetSheet.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=targetSheet.Range("A1"))
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True 'CSVファイルの区切り文字をカンマに設定
        .Refresh
    End With
  
    '特定の列のデータに基づいて、取り込むデータをフィルタリングする
    Dim lastRow As Long
    lastRow = targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row '最終行を取得
    Dim cell As Range
    For Each cell In targetSheet.Range("B1:B" & lastRow) 'フィルタリングする列を指定(例:B列)
        If Not cell.Value Like "*filter_text*" Then 'filter_textには、フィルタリングしたい文字列を指定
            cell.EntireRow.Delete 'フィルタリング条件に一致しない行を削除
        End If
    Next cell
End Sub

この例では、B列の値に、”filter_text”を含む行のみを取り込むようにフィルタリングしています。必要に応じて、フィルタリング条件を変更することができます。

コメント

タイトルとURLをコピーしました