首页 > 解决方案 > 使用 VBA 从 Access 创建多个 Excel 工作表不再有效

问题描述

我有一个 Access VBA 循环,它使用 TransferSpreadsheet 命令创建一个包含多个工作表的 Excel 电子表格。这已经工作了好几年,但现在我只看到一个工作表。它似乎创建了工作表,但覆盖了前一个工作表而不是添加另一个工作表。没有错误并且代码运行,但是当代码在格式化完成后激活电子表格时,只创建了最后一张工作表。有任何想法吗?这是 Microsoft 更新带来的意外后果吗?

有一个循环运行可变次数,每次创建一个工作表:

r.MoveFirst
ok = True
Do While ok
   tempMth = r!mth
   tempyr = r!yr
   strSQL = "SELECT * FROM BkgsSummarySS WHERE mth = '" & tempMth & "' AND yr = '" & tempyr & "'"
   Set qdf = db.QueryDefs(strTemp)
   qdf.SQL = strSQL
   qdf.Close
   Set qdf = Nothing

   DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, strTemp, SpLocation, True, strTemp
   DoCmd.RunSQL ("UPDATE bkgsSummarySS SET [party date] = #01/01/2000# WHERE mth = '" & tempMth & "' AND yr = '" & tempyr & "'")
   Set r = db.OpenRecordset("SELECT * FROM bkgsSummarySS ORDER BY [Party Date] DESC")
   r.MoveFirst
   If r![party date] = #1/1/2000# Then ok = False
Loop
r.Close
db.QueryDefs.Delete strTemp
Set objApp = CreateObject("Excel.Application")
objApp.UserControl = True
objApp.workbooks.Open (SpLocation)

然后有很多格式化行,它们仍然有效,然后是:
objApp.Visible = True

我很确定问题出在 Excel 端。我如何告诉它每次执行 TransferSpreadsheet 命令时添加一个工作表 - 它直到几周前才这样做?

标签: excelvbams-access

解决方案


推荐阅读