设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3221|回复: 4
打印 上一主题 下一主题

[Access本身] 如何把记录导出到一张以编辑好的EXCEL的表中

[复制链接]
跳转到指定楼层
1#
发表于 2005-3-8 21:36:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好

      我想把主记录和二个子记录,导出到一个以编辑好的EXCEL报表中,如何实现,请帮忙写明方法?

                                                  多谢!!!!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-3-8 21:49:00 | 只看该作者
请看transftext或open file as input #1语句。
3#
发表于 2005-3-8 21:52:00 | 只看该作者
恐怕要用到ADO才行。
4#
发表于 2005-3-9 04:49:00 | 只看该作者
帮你搜索了一下。你看看如何。http://www.office-cn.net/forum.php?mod=viewthread&tid=20424以下是我收藏的东西。我自己没有用过他这一段,不知有没有问题,不过有些句子有参考意义的。创建完美报表

Access作为Microsoft Office办公软件包中的一部分,以其友好的操作界面和卓越的数据管理能力而日益成为中小型管理信息系统的理想开发环境,在各行各业得到了广泛的应用。但在应用中我们发现,Access在报表输出上还存在一些不足:尽管它可以很好地处理一些基于页面的报表,但对一些复杂报表或一些特殊报表的处理能力却很难令人满意,这主要是由于Access系统附带的报表设计器太过直观,缺少了程序设计和文字处理所需的必要的灵活性。而Word作为Microsoft Office家族中的重要成员——字处理器,其强大的文字处理功能正好可以弥补Access在报表方面的不足。这就使得我们自然而然地想到将Access与Word有机地结合起来,利用Access的数据处理功能进行数据的录入、查询、存储,而利用Word的字处理功能进行各种报表的打印输出。幸好,微软在设计Office的时候就已经为我们提供了一种在诸如Access、Word、Excel等应用程序之间通信的机制,使得这种想法得以实现。

一、基本原理

对于一些复杂的或有特殊要求的查询,用ADO(ActiveX数据对象)来处理要比用Access本身提供的查询管理器更灵活一些。所以我们的基本思路是:用ADO执行一条或多条特定的SQL查询,生成我们所需要的一个或多个Recordset,再将这些Recordset中的数据逐条输出到Word文档,然后就可以用程序或手工控制Word文档的格式,达到我们的特殊要求。这听起来挺麻烦,可只要了解了其工作原理,实际操作却很简单。下面就分别以在Access中和在Word中的具体操作为例进行介绍。

二、在Access中应用ADO将数据输出到Word

1. 系统配置

系统软件:Microsoft Windows 9x/NT/2000;Microsoft Access 2000;Microsoft Word 2000。

样例数据库:“C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb”,Office 2000中包含的例子。可将其中的“产品”表复制到一个新的数据库中,如“D:\db1.mdb”。

窗  体:在数据库“D:\db1.mdb”中新建窗体“窗体1”,其中只包含1个命令按钮“命令0”。

引用ADO:按Alt+F11进入Visual Basic编辑器,执行“工具”->“引用”命令,在弹出的引用窗体中选择“Microsoft ActiveX Data Objects 2.1”或更高版本。

引用Word:再次执行命令“工具”->“引用”,在弹出的引用窗体中选择“Microsoft Word 9.0 Object Library”。

2. 代码详解

在“窗体1”的设计模式下右键单击“命令0”按钮,选择“事件生成器”,进入Visual Basic编辑器,创建过程“Private Sub 命令0_Click()”,其代码如下:

Sub 命令0_Click()

'输入表格标题

Title = InputBox(vbCrLf & vbCrLf & "请输入表格标题:", "表格标题", "XX公司产品报价单")

If Title = "" Then Title = "XX公司产品报价单"

'步骤1:建立数据连接cnn

'由于数据库已经打开,所以直接应用CurrentProject.Connection就可以建立连接

Set cnn = New ADODB.Connection

Set cnn = CurrentProject.Connection '步骤2:用SQL语句创建记录集rs

Set rs = New ADODB.Recordset

'设定游标类型与锁定类型

rs.CursorType = adOpenKeyset

rs.LockType = adLockOptimistic

'制定特定的查询条件,可以是任何有效的SQL查询,甚至包括多表、多条件等复杂的查询,查询条件也常常从窗体取得

SQL = "select 产品名称,单位数量,单价,库存量 from 产品 where 单价>10.00"

'创建记录集rs

rs.Open SQL, cnn

'统计字段数及记录数

total_fields = rs.Fields.Count

total_records = rs.RecordCount '步骤3:建立Word文档对象

Set mywdapp = CreateObject("word.application")

'调整Word窗口大小

mywdapp.WindowState = wdWindowStateNormal

'生成新的Word文档实例

mywdapp.Documents.Add

'设置视图为页面视图

mywdapp.ActiveWindow.View.Type = wdPrintView

'转到Word视图,显示文档生成过程

mywdapp.Visible = True

mywdapp.Activate

'设置文档(表格)字体

mywdapp.ActiveDocument.Range.Font.Size = "9" '步骤4:将记录集rs中的字段名称和字段内容输出到Word,各字段之间用制表符分隔

'输出字段名称

For I = 0 To total_fields - 2

mywdapp.Selection.TypeText Text:=rs.Fields(I).Name & vbTab

Next I

'最后一个字段名称后加回车符

mywdapp.Selection.TypeText Text:=rs.Fields(total_fields - 1).Name & vbCrLf

'逐条输出字段内容

Do While Not rs.EOF

For I = 0 To total_fields - 2

tmpstr = rs.Fields(I).value

If rs.Fields(I).Name = "单价" Then

tmpstr = Format(tmpstr, "####.00")

End If

mywdapp.Selection.Type
5#
发表于 2005-3-9 20:29:00 | 只看该作者
太晕了,有没有实例呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-20 16:30 , Processed in 0.088796 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表