excel - 使用 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 命令时添加一个工作表 - 它直到几周前才这样做?
解决方案
推荐阅读
- apache-spark - The value of spark.network.timeout must be no less than the value of spark.executor.heartbeatInterval
- r - 长到宽格式,但没有条件
- c++ - 从控制台 C++ 读取一行
- perl - 清理 Perl 脚本不应删除符号链接到的目录
- c - C中的数组边界
- excel - 如何确定某个区域的单元格中是否存在形状?
- java - SimpleXML 从特定元素获取内部 XML
- function - Python中的一个简单数学对我来说很难
- python - 是否有可能从我的井字游戏中导出四连线?
- svelte - 使用 Svelte 更新商店中的数组时未定义