Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

用VBA生成Excel表时,Excel表生成正常,但Access却陷入像是死循环的样子,该怎么办?

雕栏玉砌  发表于:2016-08-09 10:03:54  
复制

用VBA将查询出的数据生成Excel表时,Excel表生成正常,但Access却陷入像是死循环的样子,按Ctrl+B也无法退出。VBA也没有出现报警提示,不知是什么原因,有高手能解答一下吗?

 

Top
朱先生 发表于:2016-08-09 11:27:44

将VBA晒一下



雕栏玉砌 发表于:2016-08-09 11:45:30

Private Sub Command39_Click()
Dim str1, str2, str3, str4 As String

Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
str4 = "D:服务管理系统.accdb"
cnn.Open "provider=microsoft.ace.oledb.12.0; data source=" & str4
str3 = "select * from 费用结算查询 where 费用结算状态='I' order by 服务中心名称"
rs.Open str3, cnn, adOpenKeyset, adLockOptimistic
rs.MoveLast
rs.MoveFirst

Dim i, j, k, m, n As Long

Dim oExcel As Object
Dim oBook As Object
Set oExcel = CreateObject("Excel.Application") '启动Excel
Set oBook = oExcel.Workbooks.Add() '新建Excel文件
oExcel.Visible = True

k = Worksheets.count
str1 = "ABC"
m = 1
Do While Not rs.EOF
    If rs("服务中心名称") <> str1 Then  '如果当前记录的服务中心名称和上一条记录不同,则创建新的Worksheet
        If k <= 0 Then   '如果原有Excel的空白Sheets已用完,则创建新的Sheets并激活为当前Sheet
            oExcel.Worksheets.Add
        Else
            oBook.Worksheets(m).Activate
            m = m + 1
        End If
       
        k = k - 1
       
        str1 = rs("服务中心名称").Value
       
        With oBook.ActiveSheet
        .Range(Cells(1, 1), Cells(1, 17)).Merge '标题栏所占单元格合并
        .Cells(1, 1) = "KSB项目服务服务统计  KSB Project Service Fee Statistics" '设置表头
        .Cells(1, 1).HorizontalAlignment = xlHAlignCenter
        .name = str1
        End With
    End If
Loop


Set oExcel = Nothing
Set oBook = Nothing
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing


End Sub



雕栏玉砌 发表于:2016-08-09 15:57:45

搞明白了!原来是做do while循环时漏了一句“ rs.movenext”,这样以来就缺了跳出循环的条件。



朱先生 发表于:2016-09-16 09:37:39
谢谢!惭愧

总记录:4篇  页次:1/1 9 1 :