Access培训
网站公告
·Access快速平台QQ群号:277422564    ·Access快速开发平台下载地址及教程    ·欢迎添加微信交流账号:AccessoftChu    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 综合其它

【Access拓展应用】VBA导出到Excel提速之法

时 间:2013-05-14 09:01:11
作 者:nivenm   ID:29828  城市:无锡
摘 要:导出,excel
正 文:

 ViBA 导出到 Excel 提速之法   

Excel 是一个非常优秀的报表制作软件,用VBA可以控制其生成优秀的报表,本文通过添加查询语句的方法,即用Excel中的获取外部数据的功能将数据很快地从一个查询语句中捕获到EXCEL,比起往每个CELL里写数据的方法提高许多倍。

将下文加入到一个模块中,屏幕中调用如下ExporToExcel("select * from table")则实现将其导出到EXCEL

Public Function ExporToExcel(strOpen As String)

Dim Rs_Data As New ADODB.Recordset

Dim Irowcount As Integer

Dim Icolcount As Integer

   

    Dim xlApp As New Excel.Application

    Dim xlBook As Excel.Workbook

    Dim xlSheet As Excel.Worksheet

    Dim xlQuery As Excel.QueryTable

   

    With Rs_Data

        If .State = adStateOpen Then

            .Close

        End If

        .ActiveConnection = Cn

        .CursorLocation = adUseClient

        .CursorType = adOpenStatic

        .LockType = adLockReadOnly

        .Source = strOpen

        .Open

    End With

    With Rs_Data

        If .RecordCount < 1 Then

            MsgBox ("没有记录!")

            Exit Function

        End If

        '记录总数

        Irowcount = .RecordCount

        '字段总数

        Icolcount = .Fields.Count

    End With

   

    Set xlApp = CreateObject("Excel.Application")

    Set xlBook = Nothing

    Set xlSheet = Nothing

    Set xlBook = xlApp.Workbooks().Add

    Set xlSheet = xlBook.Worksheets("sheet1")

    xlApp.Visible = True

   

    '添加查询语句,导入EXCEL数据

    Set xlQuery = xlSheet.QueryTables.Add(Rs_Data, xlSheet.Range("a1"))

   

    With xlQuery

        .FieldNames = True

        .RowNumbers = False

        .FillAdjacentFormulas = False

        .PreserveFormatting = True

        .RefreshOnFileOpen = False

        .BackgroundQuery = True

        .RefreshStyle = xlInsertDeleteCells

        .SavePassword = True

        .SaveData = True

        .AdjustColumnWidth = True

        .RefreshPeriod = 0

        .PreserveColumnInfo = True

    End With

   

    xlQuery.FieldNames = True '显示字段名

    xlQuery.Refresh

   

    With xlSheet

        .Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Name = "黑体"

        '设标题为黑体字

        .Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Bold = True

        '标题字体加粗

        .Range(.Cells(1, 1), .Cells(Irowcount + 1, Icolcount)).Borders.LineStyle = xlContinuous

        '设表格边框样式

    End With

   

    With xlSheet.PageSetup

        .LeftHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10公司名称:"   ' & Gsmc

        .CenterHeader = "&""楷体_GB2312,常规""公司人员情况表&""宋体,常规""" & Chr(10) & "&""楷体_GB2312,常规""&10 期:"

        .RightHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10单位:"

        .LeftFooter = "&""楷体_GB2312,常规""&10制表人:"

        .CenterFooter = "&""楷体_GB2312,常规""&10制表日期:"

        .RightFooter = "&""楷体_GB2312,常规""&10&P &N"

    End With

   

    xlApp.Application.Visible = True

    Set xlApp = Nothing  '"交还控制给Excel

    Set xlBook = Nothing

    Set xlSheet = Nothing

End Function

 

:须在程序中引用'Microsoft Excel 9.0 Object Library'ADO对象,机器必装Excel 2000



Access软件网QQ交流群 (群号:198347485)       access源码网店

最新评论 查看更多评论(2)

2019/11/8 9:28:44binwu
话说我之前就是一直往 cells里写的方法来输出表到excel, 缺点就是表越大输出速度就越慢,尝试了一下上面的代码,但是运行到下面语句提示 “不支持此接口” Set xlQuery = xlSheet.QueryTables.Add(Rs_Data, xlSheet.Range("a1"))

2013/7/22 20:50:25爱在深秋
做个实例上传给大家学习一下,

发表评论您的评论将提升作者分享的动力!快来评论一下吧!

用户名:
密 码:
内 容:
 

常见问答

技术分类

相关资源

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助