【发布时间】:2017-11-18 01:41:10
【问题描述】:
我确信这完全是用户错误,但对于我的一生,我无法发现如何迭代表并将记录写入 Excel。我有下面的代码,但它挂在第一个 Manager ID 上,只是在循环中不断地重复写那个。我想迭代表中的所有Manager ID 并将它们写入同一个工作簿。
我应该如何调整这段代码才能做到这一点?
Set xlR = xlWb.Worksheets(1).Range("$R$2")
i=0
Set rs2 = Db.OpenRecordset("SELECT * FROM TestTable ORDER BY [Manager ID] ASC", dbOpenDynaset)
managerName = CLng(rs2.Fields(3).Value)
Debug.Print managerName
With rs2
.MoveLast
.MoveFirst
Do While Not .EOF
xlR.Value = .Fields(0).Value
xlR.Offset(ColumnOffset:=1 + (i * 2)).Value = .Fields(2).Value
xlR.Offset(ColumnOffset:=2 + (i * 2)).Value = "ENTATH01"
i = i + 1
.MoveNext
Loop
.Close
End With
xlWb.SaveAs FileName:=sPath & sFile, FileFormat:=xlOpenXMLWorkbook
xlWb.Close SaveChanges:=True
rs2.MoveNext
【问题讨论】:
-
debug.print 是否输出所有经理名称?在我看来,您没有更改目标单元格(您没有在任何地方使用递增的 i )。是否有可能在迭代 TestTable 记录集时覆盖相同的单元格 (R2)?
-
@majjam - .Fields(2).Value .Fields(1).Value 和 .Fields(3).Value 的 debug.print 表明记录集实际上正在移动
-
这是本周的第 3 或第 4 个问题,
.MoveLast后跟.MoveFirst...你们都在读同样的烂教程吗?如果您不需要.Count在开始迭代之前,那么您不需要.MoveLast和.MoveFirst。无论如何,似乎记录集 正在 迭代,但是您一遍又一遍地覆盖相同的单元格。
标签: ms-access vba ms-access-2013