Access交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • 解决'对象库未注册'的方法
  • 在ACCESS中LIKE的..
  • 《vb函数全集》电子书
  • 几个常用的身份证相关函数
  • 提供两个极好工具下载
  • Access键盘快捷键大全

最新文章

  • Access数据库设计技巧..
  • Access数据库设计技巧..
  • Access数据库设计技巧..
  • Access数据库设计技巧..
  • Access数据库设计技巧..
  • 使用Access和Exce..

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > 心得/经验/绝招
心得/经验/绝招

VBA编程自动导出生成Excel表

正 文:

access数据库点击下载此附件VBA编程自动导出生成Excel表

利用这种方法就是要编制一段VBA的程序代码,来自动完成根据需要而生成的Excel电子表功能。

下面给出的是一个自定义的函数,该函数,可以将表或查询写入到Excel中,该函数的使用方法为:

变量= ZExcel(模板名, 文件名, 记录集, 起始行, 字段数)

其中:ZExcel是函数名,带5个参数,模板名为事先创建的Excel文件名,文件名是生成以后的Excel文件名,记录集:可以是表或查询,起始行表示从那一行开始写数据,字段数表示表或查询的字段数。

例:自动生成一个“客户年度欠款情况表”的Excel表。

先用Excel制作一个模板,比如“客户年度欠款情况表”的模板格式如表1所示:

表1客户年度欠款情况表模板

客户年度欠款情况表

客户

年度

合同额总计

付款金额总计

欠款金额总计

合同数

 

 

 

 

 

 

 

 

 

 

 

 

将该文件取名为“客户年度欠款情况表模板”,并保存成Excel97-Excel2003兼容的文件格式。

使用下面的语句就可以自动生成一个“客户年度欠款情况表”的Excel电子表。

d = ZExcel("客户年度欠款情况表模板", "客户年度欠款情况表", "客户按年度计算欠款情况", 3, 6)

例:自动生成一个“客户月份欠款情况表”的Excel表。

先用Excel制作一个模板,比如“客户月份欠款情况表”的模板格式如表2所示:

 

 

表2客户月份欠款情况表模板

客户月份欠款情况表

客户

年月

合同额总计

付款金额总计

欠款金额总计

合同数

 

 

 

 

 

 

 

 

 

 

 

 

将该文件取名为“客户月份欠款情况表模板”,并保存成Excel97-Excel2003兼容的文件格式。

使用下面的语句就可以自动生成一个“客户月份欠款情况表”的Excel电子表。

d = ZExcel("客户月份欠款情况表模板", "客户月份欠款情况表", "客户按月计算欠款情况", 3, 6)

有了这个函数,将数据库中的数据输出到Excel电子表中就方便多了。其他需要生成的表格采用类似的方法,先创建一个模板,然后调用函数ZExcel即可。

下面就是该函数:

1       '将一个表或查询产生的记录集写入Excel表中

2       Function ZExcel(模板名, 文件名, 记录集, 起始行, 字段数, Optional 条件 As String)

3       Dim Excel1 As Object  ' 定义引用 Microsoft Excel 的变量。

4       Dim dbs As Database

5       Dim rst As Recordset

6       Dim I, I1 As Integer

7       Dim WJ1, WJ2, s As String

8       'On Error GoTo err1

9       Set dbs = CurrentDb

10     If InStr(1, UCase(模板名), ".XLS") > 0 or InStr(1, UCase(模板名), ".XLSX") > 0 Then  '有扩展名

11     WJ1 = CurrentProject.Path & "\" & 模板名       

 '模板文件名 (CurrentProject.Path为当前数据库的路径)

12     Else

13     WJ1 = CurrentProject.Path & "\" & 模板名 & ".XLS"       

'模板文件名 (CurrentProject.Path为当前数据库的路径)

14     End If

15     If InStr(1, UCase(文件名), ".XLS") > 0 or InStr(1, UCase(文件名), ".XLSX") > 0 Then   '有扩展名

16     WJ2 = CurrentProject.Path & "\" & 文件名         '目标文件名

17     Else

18     WJ2 = CurrentProject.Path & "\" & 文件名 & ".XLS"         '目标文件名

19     End If

20     FileCopy WJ1, WJ2                             '拷贝文件(模板文件拷贝成目标文件)

21     Set Excel1 = GetObject(WJ2, "Excel.Sheet")      '建立与Excel的连接变量

22         Excel1.Application.Visible = False          '不打开Excel程序

23         Excel1.Parent.Windows(1).Visible = True     '可见属性为真

24     If Nz(条件) <> "" Then 记录集 = "select * from " & 记录集 & " where " & 条件

25     Set rst = dbs.OpenRecordset(记录集, 2)         '设置记录集

26     If Not rst.EOF Then rst.MoveFirst              '记录集头部

27     If Not rst.EOF Then rst.MoveNext             '记录集下移一条记录

28     If Not rst.EOF Then rst.MoveNext             '记录集下移一条记录

29     s = Mid(Str(起始行 + 1), 2) & ":" & Mid(Str(起始行 + 1), 2)

30     While Not rst.EOF                             '判断记录集是否结束

31     Excel1.Application.Rows(s).Select          '选择Excel的行

32     Excel1.Application.Selection.Insert            '插入行

33     rst.MoveNext                                 '记录集下移一条记录

34     Wend                                          '循环结束语句

35     If Not rst.EOF Then rst.MoveFirst             '记录集头部

36     I1 = 起始行                                     'Excel的行

37     While Not rst.EOF                             '判断记录集是否结束

38     For I = 1 To 字段数                              '按字段数循环

39       Excel1.Application.Cells(I1, I).Value = rst.Fields(I - 1)   '在Excel列中填写数据

40     Next I                                       '循环结束语句

41     rst.MoveNext                                 '记录集下移一条记录

42     I1 = I1 + 1                                  '行加1

43     Wend                                          '循环结束语句

44     Excel1.Save                                     '保存Excel

45     Excel1.Application.Quit                         '关闭Excel

46     Set Excel1 = Nothing                            '清除内存变量

47     Set dbs = Nothing

48     Set rst = Nothing

49     ZExcel = True

50     Exit Function

51     err1:

52     Set Excel1 = Nothing

53     Set dbs = Nothing

54     Set rst = Nothing

55     ZExcel = False

56     End Function

函数前边的号码是行号,函数本身并没有,是笔者为说明而加的。

Function ZExcel(模板名, 文件名, 记录集, 起始行, 字段数, Optional 条件 As String)

函数的第1行是函数的名称定义及所带参数,函数名为ZExcel,所带参数6个,其中前5个参数是必选参数,最后一个条件参数是可选参数。

10-19行使判断模板名和文件名中是否含有“.XLS”,如果不含就加上;20行利用模板复制一个新文件;30-34行根据记录集的记录数加入空行;35-43行将记录集中的数据写入到Excel中;44行保存Excel;45行关闭Excel;46-48行清除内存变量;49行函数赋值为真;51-55行错误处理程序。

具体可参考附件中的实例。


发布人:王樵民-网络  
分享到:
点击次数:  更新时间:2009-12-02 08:42:25  【打印此页】  【关闭】
上一条:让命令按钮全变为不可用  下一条:SQL查询语句的一般格式小结



相关文章

  • • Access数据库设计技巧-第五部分
  • • Access数据库设计技巧-第四部分
  • • Access数据库设计技巧-第二部分
  • • Access数据库设计技巧-第一部分
  • • Access数据库设计技巧-第三部分
  • • 使用Access和Excel之间的选择理由
  • • access开发应用程序的过程汇总
  • • ACCESS提示错误信息,自动崩溃,数据库损坏的问题与解决办法

热门文章

  • [2005-08-16] 显示MsAccess.exe 文件的所在目录?access数据库
  • [2017-11-30] Access数据库设计技巧-第二部分access数据库
  • [2009-12-01] 面向初学者的窗体功能设计集成access数据库
  • [2009-11-24] 刷新父窗体中的子窗体数据示例access数据库
  • [2004-10-07] 用WSH对象获取系统目录access数据库
  • [2008-11-11] JAVA+ACCESS编程体会access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

Access交流网 版权所有 1999-2018 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2023  www.metinfo.cn