尝试使用 .SaveAs VBA 函数时出现方法错误

Posted

技术标签:

【中文标题】尝试使用 .SaveAs VBA 函数时出现方法错误【英文标题】:Getting method error when trying to use .SaveAs VBA function 【发布时间】:2020-01-10 17:16:25 【问题描述】:

我正在尝试让 Access 在每次程序运行时通过该程序导出我正在操作的表的副本。我在 myExcel.SaveAs 行收到以下错误:“运行时错误 '438':对象不支持此属性或方法”

我启用的参考库如下:“Visual Basic For Applications”、“Microsoft Access 16.0 Object Library”、“OLE Automation”、“Microsoft Office 16.0 Access database engine Object Library”、“Microsoft ActivceX Data Objects 6.1库”、“Microsoft Excel 16.0 对象库”。

我尝试过使用 .SaveAs 方法之前的库以及前缀的各种格式,但无济于事。

Dim myrs As DAO.Recordset ' Create a recordset to hold the data
Dim myExcel As New Excel.Application ' Create Excel with Early binding
Dim mySheet As Excel.Worksheet


Set mySheet = myExcel.Workbooks.Add(1).Worksheets(1) ' Create Workbook
Set myrs = CurrentDb.OpenRecordset("SELECT * FROM tablename") ' Define recordset
Dim i As Integer

'Add header names
For i = 0 To myrs.Fields.Count - 1
    mySheet.Cells(1, i + 1).Value = myrs.Fields(i).Name
Next

Dim fname As String
fname = "Detail_Export"
Dim timestamp As Date
timestamp = Now()
Dim strTime As String
Dim strTime2 As String

timestamp = CStr(timestamp)
strTime = Replace([timestamp], ":", ".")
strTime2 = Replace([strTime], "/", ".")

fname = fname & " " & strTime2

'Add data to excel and make Excel visible
mySheet.Range("A2").CopyFromRecordset myrs
myExcel.Visible = False
myExcel.SaveAs FileName:=("C:\User\me\Database Backups\" & fname), FileFormat:=xlOpenXMLWorkbook
myrs.Close

【问题讨论】:

myExcel 是 Excel Application 对象。你不能在应用程序上SaveAs 还需要文件扩展名。 【参考方案1】:

myExcel 是 Excel Application 对象。 SaveAsWorkbook 对象的一个​​方法:

改变

Set mySheet = myExcel.Workbooks.Add(1).Worksheets(1) ' Create Workbook

Dim myWb as Excel.Workbook
Set myWb = myExcel.Workbooks.Add

Set mySheet = myWb.Worksheets(1)

现在您可以在WorkbookSaveAs

【讨论】:

以上是关于尝试使用 .SaveAs VBA 函数时出现方法错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 将电子表格保存为 *.csv 时出现问题

VBA 在命名范围上尝试求和函数时出现运行时错误

在 Matlab 中使用 hgexport 和 saveas 时出现无效句柄错误

Excel VBA Saveas 函数损坏文件

尝试使用 SolidWorks VBA 发出 HTTP 请求时出现奇怪的错误

执行 vba 查询 ms 访问时出现运行时错误 3075