Excel 通过VBA将.xls文件保存为.xlsx文件

Excel 通过VBA将.xls文件保存为.xlsx文件,excel,vba,Excel,Vba,我将.xls文件另存为.xlsx 当我试图打开转换后的.xls文件时,它说这本书可能已损坏,但当我手动打开时,它可以工作 Sub LoopThroughFiles() Dim xFd As FileDialog Dim xFdItem As Variant Dim xFileName As String Set xFd = Application.FileDialog(msoFileDialogFolderPicker) If xFd.Show = -1

我将.xls文件另存为.xlsx

当我试图打开转换后的.xls文件时,它说这本书可能已损坏,但当我手动打开时,它可以工作

Sub LoopThroughFiles()
    Dim xFd As FileDialog
    Dim xFdItem As Variant
    Dim xFileName As String
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    If xFd.Show = -1 Then
        xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
        xFileName = Dir(xFdItem & "*.xl*")
        Do While xFileName <> ""
            With Workbooks.Open(xFdItem & xFileName)

'-------------HERE GOES MY CODE so it's not worth putting it---------------------

                Dim IntialName As String
                Dim sFileSaveName As Variant
                IntialName = "Sample"
                sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, _
                  filefilter:="Libro de Excel (*.xls), *.xls")

                If sFileSaveName <> False Then
                    ActiveWorkbook.SaveAs sFileSaveName
                End If

            End With
            xFileName = Dir
        Loop
    End If
End Sub
Sub-LoopThroughFiles()
Dim xFd As文件对话框
Dim xFdItem作为变量
Dim xFileName作为字符串
设置xFd=Application.FileDialog(msoFileDialogFolderPicker)
如果xFd.Show=-1,那么
xFdItem=xFd.SelectedItems(1)和Application.PathSeparator
xFileName=Dir(xFdItem&“*.xl*”)
当xFileName“”时执行此操作
打开工作簿(xFdItem&xFileName)
’------我的代码在这里,所以不值得放进去---------------------
将初始名称设置为字符串
Dim sFileSaveName作为变量
initialname=“样本”
sFileSaveName=Application.GetSaveAsFilename(InitialFileName:=InitialName_
文件过滤器:=“Libro de Excel(*.xls),*.xls”)
如果sFileSaveName为False,则
ActiveWorkbook.SaveAs sFileSaveName
如果结束
以
xFileName=Dir
环
如果结束
端接头

如何将.xls文件保存到.xlsx中?

您的
fileFilter
用于
xls
有什么原因吗?似乎您希望它是
.xlsx
?当我放入.xlsx时,它会正确保存,但当我尝试打开它时,数据或书籍的错误可能会被损坏@bigben还会在
活动工作簿.SaveAs
行中指定
文件格式
。或者您可以使用enum成员
xlOpenXMLWorkbook
代替硬编码
51
。谢谢@BigBen我在你的帮助下解决了它。