【问题标题】:MS Access converting .csv to .xlsMS Access 将 .csv 转换为 .xls
【发布时间】:2014-04-16 15:31:48
【问题描述】:

这是我的代码,但由于某种原因,它在 saveas 行上失败(对象不支持等)。

Sub convertToXLS()
    Dim wb As Object
    Set wb = CreateObject("Excel.Application")
    Dim strFile As String
    strFile = "C:\path to my file\filename.csv"

    wb.Workbooks.Open (strFile)
    With wb
        .SaveAs FileName:=Replace(strFile, ".csv", ".xls")
        .Close True
    End With
    Set wb = Nothing

End Sub

【问题讨论】:

    标签: excel vba ms-access csv xls


    【解决方案1】:

    在您的代码中wbExcel.Application 对象,而不是Excel.Workbook。而Excel.Application 不支持SaveAs 方法。改用这个:

    Sub convertToXLS()
        Dim xlApp As Object
        Dim wb As Object
        Dim strFile As String
    
        Set xlApp = CreateObject("Excel.Application")        
        strFile = "C:\path to my file\filename.csv"    
        Set wb = xlApp.Workbooks.Open(strFile)
    
        With wb
            ' where 56 is value of excel constant xlExcel8
            .SaveAs FileName:=Replace(strFile, ".csv", ".xls"), FileFormat:=56 
            .Close True
        End With
        'clean up
        Set wb = Nothing
        xlApp.Quit
        Set xlApp = Nothing
    End Sub
    

    【讨论】:

    • 它有效,但是当我尝试打开 .xls 时,它说它的格式与文件扩展名不同
    • 是的,你应该检查我更新的答案,使用.SaveAs FileName:=Replace(strFile, ".csv", ".xls"), FileFormat:=56
    • 没关系,错过了编辑。那个文件格式的东西解决了这个问题。什么是文件格式 56? .xls 格式?
    • 是的,FileFormat:=56FileFormat:=xlExcel8 (.xls) 相同,但是由于您使用的是 Access 中的此宏,因此 Access 对 excel 常量一无所知,直到您添加对Excel 库。这就是为什么我使用常量值56 而不是常量本身
    猜你喜欢
    • 2020-03-07
    • 2011-06-14
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    相关资源
    最近更新 更多