记录集不迭代

时间:2017-11-17 16:09:26

标签: vba ms-access access-vba ms-access-2013

我确信这是严格的用户错误,但对于我的生活,我无法发现如何迭代表,并将记录写入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

2 个答案:

答案 0 :(得分:3)

您没有更改偏移量,因此您不断指定相同的单元格。

尝试以下方法:

    xlR.Offset(ColumnOffset:=i * 3).Value
    xlR.Offset(ColumnOffset:=1+(i*3)).Value = .Fields(2).Value
    xlR.Offset(ColumnOffset:=2+(i*3)).Value = "ENTATH01"

我假设您正在将i初始化为0

答案 1 :(得分:0)

变化:¨

i = i + 1
.MoveNext

i = i + 2
.MoveNext