excel - 将 CSV 文件导入 Excel

标签 excel vba csv import

我想请求您提供以下帮助:

我有从软件应用程序导出的 CSV 文件,需要将其导入 Excel 中以分析数据。每天生成 40-50 个 CSV。现在我通过“从文本获取外部数据”手动执行此操作。导入时记录的代码为:

With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;SYSTEM:Users:catalin:Documents:LINELLA:WH Analytics:data:pick 01-18:050:Inquiry closed lists  SKU_0142.csv" _
    , Destination:=Range("A1704"))
    .Name = "Inquiry closed lists  SKU_0142"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = xlMacintosh
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = True
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = False
    .TextFileOtherDelimiter = ";"
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
    .Refresh BackgroundQuery:=False
    .UseListObject = False
End With
Selection.End(xlDown).Select
Range("A1710").Select

我希望能够从选定的文件夹中自动导入所有 CSV 文件,我将在其中放置新文件并启动导入过程。每个文件应紧接在前一个文件的最后一行之后插入。

我们将非常感谢您的帮助。

最佳答案

将您录制的代码放入函数中,用变量替换静态文件名,然后为文件夹中的每个 *.csv 文件调用该函数。要使下面的示例正常工作,您需要将包含此宏的文件保存在与 csv 文件相同的文件夹中。为了进行快速测试,我必须将分隔符从 ; 替换为 ,,并删除最后一行 .UseListObject = False

Sub ImportAllCSV()
  Dim FName As Variant, R As Long
  R = 1
  FName = Dir("*.csv")
  Do While FName <> ""
    ImportCsvFile FName, ActiveSheet.Cells(R, 1)
    R = ActiveSheet.UsedRange.Rows.Count + 1
    FName = Dir
  Loop
End Sub

Sub ImportCsvFile(FileName As Variant, Position As Range)
  With ActiveSheet.QueryTables.Add(Connection:= _
      "TEXT;" & FileName _
      , Destination:=Position)
      .Name = Replace(FileName, ".csv", "")
      .FieldNames = True
      .RowNumbers = False
      .FillAdjacentFormulas = False
      .RefreshOnFileOpen = False
      .BackgroundQuery = True
      .RefreshStyle = xlInsertDeleteCells
      .SavePassword = False
      .SaveData = True
      .AdjustColumnWidth = True
      .TextFilePromptOnRefresh = False
      .TextFilePlatform = xlMacintosh
      .TextFileStartRow = 1
      .TextFileParseType = xlDelimited
      .TextFileTextQualifier = xlTextQualifierDoubleQuote
      .TextFileConsecutiveDelimiter = False
      .TextFileTabDelimiter = True
      .TextFileSemicolonDelimiter = False
      .TextFileCommaDelimiter = False
      .TextFileSpaceDelimiter = False
      .TextFileOtherDelimiter = ","
      .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
      .Refresh BackgroundQuery:=False
  End With
End Sub

关于excel - 将 CSV 文件导入 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17899897/

相关文章:

vba - 使用 VBA 仅获取文件名/文件路径的一部分

vba - 将行复制并粘贴到新工作表中,并根据其他单元格值更改单元格值(月份)

node.js - 上传数据时暂停 Node csv-parser

c# - 使用正确的表格格式将带有图像的 DataGridView 数据导出到 Excel、HTML 或 Word

excel - 使用VBA从表中删除空白条目

.net - 在我的析构函数中释放 Excel 对象

excel - 如何使用特定单词复制 Excel 中的行并将其粘贴到另一个 Excel 工作表?

python - CSV Python 列/行平均值

python - 连接 CSV 或表格

vba - 多页用户表单 Excel - 添加下一个按钮