【发布时间】:2019-12-14 12:05:18
【问题描述】:
我尝试使用此脚本将 xlsx 文件转换为 csv。
我希望旧文件位于文件夹中,并且 csv 文件上的名称与 xlsx 文件完全相同。
我在 filename..csv 之类的 csv 扩展上获得了额外的 .。
Sub ConvertCSVToXlsx()
Dim myfile As String
Dim oldfname As String, newfname As String
Dim workfile
Dim folderName As String
Application.DisplayAlerts = False
Application.ScreenUpdating = False
' Capture name of current file
myfile = ActiveWorkbook.Name
' Set folder name to work through
folderName = "C:\Test\"
' Loop through all CSV filres in folder
workfile = Dir(folderName & "*.xlsx")
Do While workfile <> ""
' Open CSV file
Workbooks.Open Filename:=folderName & workfile
' Capture name of old CSV file
oldfname = ActiveWorkbook.FullName
' Convert to XLSX
newfname = folderName & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".CSV"
ActiveWorkbook.SaveAs Filename:=newfname, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close
' Delete old CSV file
Kill oldfname
Windows(myfile).Activate
workfile = Dir()
Loop
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
这个 Len(ActiveWorkbook.Name) - 4) 应该是 Len(ActiveWorkbook.Name) - 5)
-
这里发生了很多事情,对于一个通用问题来说真的太多了。可以通过将代码剥离到显示问题的最低限度来改进这个问题。但是,感谢您第一次为 StackOverflow 做出贡献。我会给第一篇文章+1。考虑如何将代码简化为最少的代码来解决问题。
-
@M.K.Hunter-代码的哪一部分对你来说太多了,你对削减它有什么建议?