VBA批量导入CSV文件、批量改数据标题、批量做数据透视表

'本代码是利用VB批量导入CSV文件,并且每个文件存为一个Sheet
'前提是所有CSV文件和运行宏的这个文件在同一个文件夹
'不智能的地方是我预先知道有多少个CSV文件,然后把文件名改为1.csv,2.csv,...
'所以循环的时候总数是写死的
'另外我的数据导入处理方式是:文件包含标题且按逗号隔开,若不一样更改参数就行了
'下面就附上所有完整代码:
'主函数
Sub main()
  Dim startNum,endNum as Integer
  startNum = 1
  endNum = 5
  Call addSheet_openFile(startNum,endNum)
  Call changeName(startNum,endNum)
  Call perspectiveTable(startNum,endNum)
  ActiveWorkbook.Save
End Sub

'批量导入CSV
Sub addSheet_openFile(startNum,endNum)
  Dim i As Integer
  Dim NewSheet As Worksheet
  For i = startNum To endNum
    ActiveSheet.Name = "Sheet" & CStr(i)
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;D:\xlh\201801\优惠券统计\" & CStr(i) & ".csv" _
        , Destination:=Range("$A$1"))
        .Name = CStr(i)
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 936
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(2, 2, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    If i < endNum Then
      Set NewSheet = Worksheets.Add(after:=ActiveSheet)
    End If
  Next
End Sub


'批量导入之后需要同意更改所有Sheet的数据标题
Sub changeName(startNum,endNum)
  Dim i As Integer
  For i = startNum To endNum
    Sheets("Sheet" + CStr(i)).Select
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "userno"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "cid"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "count"
  Next
End Sub

'然后就需要对每个sheet做数据透视表进行分类统计
Sub perspectiveTable(startNum,endNum)
  Dim i As Integer
  Dim sheetName As String
  For i = startNum To endNum
    sheetName = "Sheet" & CStr(i)
    Sheets(sheetName).Select
    Columns("A:C").Select
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        sheetName & "!R1C1:R1048576C3", Version:=6).CreatePivotTable TableDestination:= _
        sheetName & "!R1C6", TableName:="数据透视表2", DefaultVersion:=6
    Sheets(sheetName).Select
    Cells(1, 6).Select
    ActiveWorkbook.ShowPivotTableFieldList = True
    With ActiveSheet.PivotTables("数据透视表2").PivotFields("userno")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("数据透视表2").PivotFields("cid")
        .Orientation = xlColumnField
        .Position = 1
    End With
    ActiveSheet.PivotTables("数据透视表2").AddDataField ActiveSheet.PivotTables("数据透视表2" _
        ).PivotFields("count"), "求和项:count", xlSum
    Columns("A:C").Select  '删除原始数据
    Selection.Delete Shift:=xlToLeft
  Next
End Sub

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: VBA(Visual Basic for Applications)是一种用于开发Microsoft Office应用程序的编程语言。使用VBA,我们可以编写宏和脚本来自动化各种任务,包括处理CSV文件。 处理CSV文件的第一步是打开文件。可以使用VBA中的Open语句来打开CSV文件,并将其内容读入到工作簿或变量中进行处理。在打开文件之前,我们需要确保文件的路径和名称是正确的。 读取CSV文件后,我们可以使用VBA来处理数据。例如,我们可以使用循环结构逐行读取文件中的数据,并对每一行进行处理。在处理数据时,我们可以使用各种VBA字符串和数值函数来执行各种运算和转换操作。 处理完CSV文件后,我们可以使用VBA来保存结果。可以使用VBA中的SaveAs方法将处理后的数据保存为CSV文件或任何其他格式的文件。 使用VBA批处理CSV文件时,我们还可以创建自定义的函数和子程序。这些函数和子程序可以用于特定的任务,比如数据清理、格式转换等。我们可以根据需要编写和调用这些自定义函数和子程序。 总之,使用VBA可以轻松地批量处理CSV文件。我们可以打开、读取、处理和保存文件中的数据,并可以使用自定义函数和子程序来完成特定的任务。通过利用VBA的强大功能,我们可以提高工作效率并减少重复劳动。 ### 回答2: VBA是Visual Basic for Applications的简称,它是一种用于应用程序的编程语言。在处理CSV文件时,可以使用VBA来实现批量处理。 首先,我们可以使用VBA编写一个宏,以便在Excel中自动打开CSV文件。具体操作是:点击“开发工具”选项卡,选择“Visual Basic”编辑器,然后在项目资源管理器中,双击“Sheet1”(或其他工作名称),在代码窗口中输入以下代码: ```vba Sub OpenCSVFiles() Dim MyFolder As String Dim MyFile As String '设定CSV文件存放目录 MyFolder = "C:\CSVFiles\" '获取目录中的所有CSV文件名称 MyFile = Dir(MyFolder & "*.csv") '循环处理所有CSV文件 Do While MyFile <> "" Workbooks.Open Filename:=MyFolder & MyFile '在这里添加对CSV文件的处理逻辑 '...... '关闭当前打开的CSV文件 ActiveWorkbook.Close SaveChanges:=False '获取下一个CSV文件名称 MyFile = Dir Loop End Sub ``` 上述代码中,我们首先设定CSV文件存放的目录,然后通过Dir函数获取目录下所有的CSV文件名称。接下来,使用Workbooks.Open方法打开CSV文件,并在其中添加处理逻辑。最后,使用ActiveWorkbook.Close方法关闭当前打开的文件。通过循环处理,我们可以批量处理所有的CSV文件。 在宏的主代码部分,我们可以添加对CSV文件的各种处理逻辑。例如,提取数据、进行计算、修文件格式等等操作都可以在这里实现。 总之,使用VBA可以很方便地批量处理CSV文件。通过编写相应的宏,我们可以自动打开、处理和关闭多个CSV文件,提高工作效率。 ### 回答3: 使用VBA处理CSV文件可以批量处理数据。首先,你需要打开一个新的Excel工作簿,然后在VBA编辑器中编写你的宏程序。下面是一个简单的示例: ```vba Sub BatchProcessCSV() Dim srcFolder As String Dim destFolder As String Dim srcFile As String Dim destFile As String '设置源文件夹和目标文件夹的路径 srcFolder = "C:\SourceFolder\" destFolder = "C:\DestinationFolder\" '获取源文件夹中的所有文件 srcFile = Dir(srcFolder & "*.csv") '循环处理每个CSV文件 Do While srcFile <> "" '设置目标文件名 destFile = destFolder & Replace(srcFile, ".csv", "_processed.csv") '打开CSV文件 Workbooks.Open Filename:=srcFolder & srcFile '在这里编写你需要进行的批量处理操作 '例如,可以使用Worksheet对象来读取和修数据 '保存修后的数据为新的CSV文件 ActiveWorkbook.SaveAs Filename:=destFile, FileFormat:=xlCSV '关闭CSV文件 ActiveWorkbook.Close '寻找下一个CSV文件 srcFile = Dir Loop '显示处理完成的信息 MsgBox "批量处理CSV文件完成!" End Sub ``` 在上述示例中,我们首先设置了源文件夹和目标文件夹的路径。然后使用`Dir`函数获取源文件夹中的所有CSV文件。接下来,通过循环处理每个CSV文件,我们可以使用`Workbooks.Open`方法打开CSV文件,并在需要进行批量处理的地方编写相应的代码。处理完成后,使用`SaveAs`方法将修后的数据保存为新的CSV文件,并使用`Close`方法关闭CSV文件。最后,运行宏程序并等待处理完成的消息框。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trisyp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值