首页 > 技术文章 > 批量互转(xls-xlsx-csv)

redufa 2020-09-17 18:31 原文

 1、获取原文件的名称

获取原文件文件名,但是不带扩展名:Newname = Left(File, Application.Find(".", File) - 1)   

2、以新格式保存

 Wb.SaveAs Filename:=MyPath & Newname & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

这一段是复制宏命令中的另存为的代码,修改了储存路径和文件名称。

3、批量互转(xls-xlsx-csv)

下面三行可以互换,看需要输出什么格式。

Wb.SaveAs Filename:=MyPath & Newname & ".xlsx", FileFormat:=xlOpenXMLWorkbook

Wb.SaveAs Filename:=MyPath & Newname & ".csv", FileFormat:=xlCSV

Wb.SaveAs Filename:=MyPath & Newname & ".xls", FileFormat:=xlOpenXMLWorkbook

 

PS: 对比参考

 和这篇:

https://www.cnblogs.com/redufa/p/13685914.html

思路类似,不同的地方:

1)一个用字符串函数instr,一个用find函数;

     用法和例子见:

    http://www.360doc.com/content/15/0216/08/21373269_448907032.shtml

2)一个用do while循环,一个用  Do Until ;

3)判断语句一个用<>,一个判断字符串个数的len函数。

 

Sub xls2xlsx()
'Dim Wb As Workbook, MyPath, File   As String
 MyPath = ThisWorkbook.Path & "\"
 File = Dir(MyPath & "*.xls*") 
 Do While File <> "" '遍历所有文件
    If File <> ThisWorkbook.Name Then '不是 当前工作簿
       Set Wb = Workbooks.Open(MyPath & File)
           Newname = Left(File, Application.Find(".", File) - 1)
             Wb.SaveAs Filename:=MyPath & Newname & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

                 Wb.Close False '关闭工作簿 不保存

  End If

     File = Dir

Loop
End Sub
 

推荐阅读