use*_*210 5 excel vba excel-vba
我在文件夹中有一堆文件,所有这些都是xlsx格式化的,我需要将它们转换为xls格式.这将在每日基础上完成.
我需要一个宏来循环文件夹并将文件从xlsx转换为xls而不更改文件名.
这是我用来循环的宏
Sub ProcessFiles()
Dim Filename, Pathname As String
Dim wb As Workbook
Pathname = ActiveWorkbook.Path & "C:\Users\myfolder1\Desktop\myfolder\Macro\"
Filename = Dir(Pathname & "*.xls")
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
DoWork wb
wb.Close SaveChanges:=True
Filename = Dir()
Loop
End Sub
Run Code Online (Sandbox Code Playgroud)
您缺少的是wb.Close SaveChanges=True,您需要wb.SaveAs使用新的文件格式和名称调用,而不是调用以另一种格式保存文件.
你说你想在不改变文件名的情况下转换它们,但我怀疑你真的想要用相同的基本文件名保存它们,但是.xls扩展名.因此,如果工作簿已命名book1.xlsx,则您希望将其另存为book1.xls.要计算新名称,您可以Replace()使用旧名称替换.xlsx扩展名.xls.
您还可以通过设置来禁用兼容性检查程序wb.CheckCompatibility,并通过设置来禁止警报和消息Application.DisplayAlerts.
Sub ProcessFiles()
Dim Filename, Pathname, saveFileName As String
Dim wb As Workbook
Dim initialDisplayAlerts As Boolean
Pathname = "<insert_path_here>" ' Needs to have a trailing \
Filename = Dir(Pathname & "*.xlsx")
initialDisplayAlerts = Application.DisplayAlerts
Application.DisplayAlerts = False
Do While Filename <> ""
Set wb = Workbooks.Open(Filename:=Pathname & Filename, _
UpdateLinks:=False)
wb.CheckCompatibility = False
saveFileName = Replace(Filename, ".xlsx", ".xls")
wb.SaveAs Filename:=Pathname & saveFileName, _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
wb.Close SaveChanges:=False
Filename = Dir()
Loop
Application.DisplayAlerts = initialDisplayAlerts
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18593 次 |
| 最近记录: |