使用VBA从Access创建多个Excel工作表不再有效
我有一个Access VBA循环,它使用TransferSpreadsheet命令创建包含多个工作表的Excel电子表格。这已经奏效好几年了,但现在我只看到一份工作表。 它似乎创建了图纸,但覆盖了上一张,而不是添加另一张。 没有错误,代码可以运行,但当代码在格式化完成后激活电子表格时,只创建了最后一张工作表。 有什么想法吗?这是否是由于Microsoft更新导致的意外后果 有一个循环,每次创建工作表时运行的次数可变:使用VBA从Access创建多个Excel工作表不再有效,excel,vba,ms-access,Excel,Vba,Ms Access,我有一个Access VBA循环,它使用TransferSpreadsheet命令创建包含多个工作表的Excel电子表格。这已经奏效好几年了,但现在我只看到一份工作表。 它似乎创建了图纸,但覆盖了上一张,而不是添加另一张。 没有错误,代码可以运行,但当代码在格式化完成后激活电子表格时,只创建了最后一张工作表。 有什么想法吗?这是否是由于Microsoft更新导致的意外后果 有一个循环,每次创建工作表时运行的次数可变: r.MoveFirst ok = True Do While ok te
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命令时添加工作表?它在几周前才这样做?如果没有代码,我们知道什么?至少出于诊断目的,请查看导出到当前Excel格式是否有任何不同的工作方式。Excel8将对应于Office_97时代的Excel版本,因此可能是Windows/Office更新破坏了一些可能永远无法修复的东西。