【问题标题】:VBA - error when trying to save file - Object doesn't support property or method?VBA - 尝试保存文件时出错 - 对象不支持属性或方法?
【发布时间】:2021-03-15 12:04:12
【问题描述】:

我正在尝试从单独的 Excel 文件运行此代码,但我不断在 xl.SaveAs 行上收到一条说明该对象不支持该属性或方法的消息。当我提到“xl”时。在其他部分(例如 Refresh Table 部分)中,它可以完美运行,但不适用于 SaveAs 方法。我做错了什么?

Sub DailyRefresh ()
    'Open and refresh Access
    Dim appAccess As Object
    Set appAccess = GetObject("S:\Shared\DailyRefresh.accdb")
    Application.DisplayAlerts = False
    appAccess.Visible = True
    appAccess.DoCmd.RunMacro "Run_All_Queries"
    appAccess.CloseCurrentDatabase

   'Open Excel

    Set xl = CreateObject("Excel.Application")
    xl.Workbooks.Open ("s:\Shared\Template.xlsx")
    xl.Visible = True
    Application.DisplayAlerts = False
    
'Set date to the 1st of the Month on Summary tab
    xl.Sheets("Summary").Visible = True
    xl.Sheets("Summary").Select
    xl.Range("C10").Value = DateSerial(Year(Now), Month(Now), 1)
    xl.Range("C10").NumberFormat = "mm/dd/yyyy"

' REFRESH Table
    xl.Sheets("Data").Visible = True
    xl.Sheets("Data").Select
    xl.Range("A1").Select
    xl.Range("DailyRefresh.accdb[[#Headers],[ACTIVITY_DT]]").Select
    xl.Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    xl.Worksheets("Fname").Visible = True
    xl.Sheets("Fname").Select
    
     
'Copy and Save AS
    
    Application.DisplayAlerts = False
    Path = "S:\Shared\NewTemplate"
    Filename = xl.Sheets("Fname").Range("A7").Value
    xl.SaveAs Path & Filename & ".xlsx", FileFormat:=51, CreateBackup:=False
    xl.Worksheets("Fname").Visible = False
    xl.Close
    Application.DisplayAlerts = True
    
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您希望“保存文档”而不是“保存应用程序”——对于 Excel,文档就是工作簿。

    对于您的“开放”部分,请这样做:

    Dim wb as Workbook
    Set xl = CreateObject("Excel.Application")
    Set wb = xl.Workbooks.Open("s:\Shared\Template.xlsx")
    xl.Visible = True
    Application.DisplayAlerts = False
    

    然后,当您要保存工作簿时,只需使用相同的 wb 变量:

    wb.SaveAs Path & Filename & ".xlsx", FileFormat:=51, CreateBackup:=False
    wb.Close
    xl.Quit
    

    【讨论】:

    • @Eyan 然后考虑接受答案(勾选它),以便其他访问者知道它已解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多