从Access中导出Excel文件的宏

最近需要从Access中抽出一些数据,手工操作太麻烦,所以写了宏来帮忙。


作用:

  将制定Table中的数据,作为检索条件,分别抽出数据并导出到Excel文件中。


Option Compare Database

Private Sub export()

    On Error GoTo ERROR_HANDLER
    
    Dim daoDB As Database
    Dim strac As String
    Dim varxls As Variant
    Dim rsErrSet As Recordset
    Dim strKey As String
    
    ' 准备环境
    Set daoDB = DBEngine.Workspaces(0).Databases(0)
    
    ' 取得需要处理的数据
    Set rsErrSet = daoDB.OpenRecordset("ERRLOG", dbOpenForwardOnly, dbReadOnly)
    
    Do Until rsErrSet.EOF
        Debug.Print rsErrSet!errcode & " " & rsErrSet!Key
        ' 生成导出Excel的Sheet名
        strac = rsErrSet!ID & "数据"
        If rsErrSet!Key <> "" Then
            ' 特殊文字替换
            strKey = Replace(rsErrSet!Key, "[", "*")
            strKey = Replace(strKey, "]", "")
            ' 做成检索
            daoDB.CreateQueryDef strac, _
                                 "SELECT [LIST].* FROM LIST WHERE [LIST].errcode like '*" & Right(rsErrSet!errcode, 8) & _
                                 "' and [LIST].msg like '*" & strKey & "*';"
        Else
            'クエリーの新規作成
            daoDB.CreateQueryDef strac, _
                                 "SELECT [LIST].* FROM LIST WHERE [LIST].errcode like '*" & Right(rsErrSet!errcode, 8) & "';"
        End If

        ' 设定导出文件名
        varxls = CurrentProject.Path & "\data.xls"
        ' 导出
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, strac, varxls, True
        
        ' 删除检索
        daoDB.QueryDefs.Delete strac
        
        rsErrSet.MoveNext
    Loop
    ' 关闭
    daoDB.Close
    MsgBox "成功!"
    
    Exit Sub
    
ERROR_HANDLER:

    Debug.Print Err.Description
    MsgBox vbCrLf & Err.Description, vbCritical

End Sub



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值