【发布时间】:2020-08-30 06:35:56
【问题描述】:
我的目标是从输入文件夹中打开多个 excel 文件并将它们转换为输出文件夹中的 .csv。我遇到了一些小问题
- 代码将 .xlsx 转换为 .csv ,将 .xls 转换为 .csv 但在输出中 文件夹,它存储 .csv 和 .xls 文件。我不知道为什么.xls 文件也被存储。我只希望存储 .csv 文件
- 我只想从 excel 'Sheet1' 转换数据,但代码是 从活动工作表转换数据。如何指定转换 仅来自“Sheet1”的数据?
Option Explicit
Sub ImportMultipleCsvFile()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
Dim InputCsvFile As Variant
Dim InputFolder As String, OutputFolder As String
InputFolder = "C:\Users\excel_format"
OutputFolder = "C:\Users\csv_format"
InputCsvFile = Dir(InputFolder & "\*.xl??")
While InputCsvFile <> ""
Workbooks.OpenText Filename:=InputFolder & "\" & InputCsvFile, DataType:=xlDelimited, Comma:=True
ActiveWorkbook.SaveAs Filename:=OutputFolder & "\" & Replace(ActiveWorkbook.Name, ".xlsx", ".csv"), FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.SaveAs Filename:=OutputFolder & "\" & Replace(ActiveWorkbook.Name, ".xls", ".csv"), FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Close
InputCsvFile = Dir
Wend
Application.Calculation = xlCalculationAutomatic
End Sub
【问题讨论】:
-
您有两行
.SaveAs行 - 一行保存为 xlsx,另一行保存为 xls,这就是创建额外 xls 文件的原因。 -
@Applecore 如果我删除了第二个 .SaveAs,它不会转换 .xls 文件。
-
我确定 Applecore 并不是要删除第二行...我认为他/她的意思是,如果您不想创建额外的 .xls 文件,则不能同时运行.这就是为什么它是我的答案的方式,所以只有一个会被执行,基于原始文件名条件......我希望你分析死亡的答案,当你从某人那里得到一个时,所以你知道为什么事情会这样发生。