以下是一个VBA示例代码,可以实现您的要求:

Sub ConvertXLSFilesToXLSX()
    Dim mainPath As String
    Dim folderPath As String
    Dim xlsxFolderPath As String
    Dim fso As Object
    Dim folder As Object
    Dim subFolder As Object
    Dim file As Object
    
    ' 设置主文件夹路径
    mainPath = "选择路径"
    
    ' 创建保存xlsx文件的文件夹
    xlsxFolderPath = mainPath & "\xlsx"
    If Not CreateFolder(xlsxFolderPath) Then
        MsgBox "创建xlsx文件夹失败!"
        Exit Sub
    End If
    
    ' 创建文件系统对象
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    ' 遍历主文件夹下的所有子文件夹
    Set folder = fso.GetFolder(mainPath)
    For Each subFolder In folder.SubFolders
        ' 遍历子文件夹下的所有.xls文件
        For Each file In subFolder.Files
            If fso.GetExtensionName(file.Name) = "xls" Then
                ' 将.xls文件转换为.xlsx
                ConvertXLSToXLSX file.Path, xlsxFolderPath & "\" & subFolder.Name & "\" & Replace(file.Name, ".xls", ".xlsx")
            End If
        Next file
    Next subFolder
    
    MsgBox "转换完成!"
End Sub

Function CreateFolder(folderPath As String) As Boolean
    On Error Resume Next
    MkDir folderPath
    On Error GoTo 0
    If Dir(folderPath, vbDirectory) = "" Then
        CreateFolder = False
    Else
        CreateFolder = True
    End If
End Function

Sub ConvertXLSToXLSX(filePath As String, savePath As String)
    Dim xlsFile As Workbook
    Dim xlsxFile As Workbook
    
    ' 打开.xls文件
    Set xlsFile = Workbooks.Open(filePath)
    
    ' 另存为.xlsx文件
    xlsFile.SaveAs savePath, FileFormat:=xlOpenXMLWorkbook
    
    ' 关闭工作簿
    xlsFile.Close SaveChanges:=False
End Sub

使用时,您需要将代码中的"选择路径"替换为您的选择路径。请确保在选择路径下存在一个名为xlsx的文件夹,用于保存转换后的.xlsx文件。

此代码将遍历选择路径下的文件夹及其子文件夹中的.xls文件,并将其转换为.xlsx文件,然后另存为当前路径下xlsx文件夹中的相应子文件夹中。转换后的.xlsx文件将按原文件顺序存入相同名称的子文件夹中

VBA转换选择路径下的文件夹及其子文件夹中的xls格式文件为xlsx格式并另存为当前路径下xlsx文件夹中在xlsx文件夹中按原文件顺序存入相同名称的子文件夹中

原文地址: http://www.cveoy.top/t/topic/h73c 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录