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