設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 4270|回復(fù): 7
打印 上一主題 下一主題

[ADO/DAO] 在Access中應(yīng)用ADO將數(shù)據(jù)輸出到Word

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2002-9-29 01:59:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1. 系統(tǒng)配置
系統(tǒng)軟件:Microsoft Windows 9x/NT/2000;Microsoft Access 2000;Microsoft Word 2000。
樣例數(shù)據(jù)庫:“C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb”,Office 2000中包含的例子。可將其中的“產(chǎn)品”表復(fù)制到一個新的數(shù)據(jù)庫中,如“D:\db1.mdb”。
窗 體:在數(shù)據(jù)庫“D:\db1.mdb”中新建窗體“窗體1”,其中只包含1個命令按鈕“命令0”。
引用ADO:按Alt+F11進入Visual Basic編輯器,執(zhí)行“工具”->“引用”命令,在彈出的引用窗體中選擇“Microsoft ActiveX Data Objects 2.1”或更高版本。
引用Word:再次執(zhí)行命令“工具”->“引用”,在彈出的引用窗體中選擇“Microsoft Word 9.0 Object Library”。
2. 代碼詳解
在“窗體1”的設(shè)計模式下右鍵單擊“命令0”按鈕,選擇“事件生成器”,進入Visual Basic編輯器,創(chuàng)建過程“Private Sub 命令0_Click()”,其代碼如下:
Sub 命令0_Click()
'輸入表格標(biāo)題
Title = InputBox(vbCrLf & vbCrLf & "請輸入表格標(biāo)題:", "表格標(biāo)題", "XX公司產(chǎn)品報價單")
If Title = "" Then Title = "XX公司產(chǎn)品報價單"

'步驟1:建立數(shù)據(jù)連接cnn
'由于數(shù)據(jù)庫已經(jīng)打開,所以直接應(yīng)用CurrentProject.Connection就可以建立連接
Set cnn = New ADODB.Connection
Set cnn = CurrentProject.Connection

'步驟2:用SQL語句創(chuàng)建記錄集rs
Set rs = New ADODB.Recordset
'設(shè)定游標(biāo)類型與鎖定類型
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
'制定特定的查詢條件,可以是任何有效的SQL查詢,甚至包括多表、多條件等復(fù)雜的查詢,查詢條件也常常從窗體取得
SQL = "select 產(chǎn)品名稱,單位數(shù)量,單價,庫存量 from 產(chǎn)品 where 單價>10.00"
'創(chuàng)建記錄集rs
rs.Open SQL, cnn
'統(tǒng)計字段數(shù)及記錄數(shù)
total_fields = rs.Fields.Count
total_records = rs.RecordCount

'步驟3:建立Word文檔對象
Set mywdapp = CreateObject("word.application")
'調(diào)整Word窗口大小
mywdapp.WindowState = wdWindowStateNormal
'生成新的Word文檔實例
mywdapp.Documents.Add
'設(shè)置視圖為頁面視圖
mywdapp.ActiveWindow.View.Type = wdPrintView
'轉(zhuǎn)到Word視圖,顯示文檔生成過程
mywdapp.Visible = True
mywdapp.Activate
'設(shè)置文檔(表格)字體
mywdapp.ActiveDocument.Range.Font.Size = "9"

'步驟4:將記錄集rs中的字段名稱和字段內(nèi)容輸出到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
'逐條輸出字段內(nèi)容
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.TypeText Text:=tmpstr & vbTab
Next I
'一條記錄的最后一個字段后加回車符
mywdapp.Selection.TypeText Text:=rs.Fields(total_fields - 1).Value & vbCrLf
rs.MoveNext
Loop

'步驟5:關(guān)閉記錄集
rs.Close
Set rs = Nothing

'步驟6:對Word中的數(shù)據(jù)進行格式化處理
'選定文本,將其轉(zhuǎn)換為表格
'設(shè)置視圖為普通視圖
mywdapp.ActiveWindow.View.Type = wdNormalView
'將光標(biāo)移動到文檔末尾
mywdapp.Selection.EndKey Unit:=wdStory
'刪除文檔末尾多余的回車符
mywdapp.Selection.Delete Unit:=wdCharacter, Count:=1
'選中全部內(nèi)容
mywdapp.Selection.WholeStory
'將所選內(nèi)容轉(zhuǎn)換為表格
mywdapp.Selection.ConvertToTable Separator:=wdSeparateByTabs, DefaultTableBehavior:=wdWord8TableBehavior
'將光標(biāo)移動到文檔開頭
mywdapp.Selection.HomeKey Unit:=wdStory
'選定表格對象
Set Temp_Table = mywdapp.ActiveDocument.Tables(1)
'根據(jù)需要對表格進行處理,這是制作表格格式的關(guān)鍵,可反復(fù)調(diào)試
'本例只簡單地設(shè)置了表格居中、自動調(diào)整表格列寬、表頭居中、標(biāo)題行重復(fù)、設(shè)置表格邊框線、設(shè)置表格縱向居中
Temp_Table.Rows.Alignment = wdAlignRowCenter
Temp_Table.AutoFitBehavior wdAutoFitContent
Temp_Table.Rows(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
Temp_Table.Rows(1).Range.Rows.HeadingFormat = wdToggle
Temp_Table.Borders(wdBorderLeft).LineWidth = wdLineWidth150pt
Temp_Table.Borders(wdBorderRight).LineWidth = wdLineWidth150pt
Temp_Table.Borders(wdBorderTop).LineWidth = wdLineWidth150pt
Temp_Table.Borders(wdBorderBottom).LineWidth = wdLineWidth150pt
Temp_Table.Range.Cells.VerticalAlignment = wdCellAlignVerticalCenter
'將光標(biāo)移動到文檔開頭
mywdapp.Selection.HomeKey Uni
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2003-6-3 04:57:00 | 只看該作者
詳、細。
3#
發(fā)表于 2003-6-3 15:46:00 | 只看該作者
收藏。
4#
發(fā)表于 2003-6-3 16:49:00 | 只看該作者
精品
5#
發(fā)表于 2003-6-3 21:29:00 | 只看該作者
Very Good
thank you

6#
發(fā)表于 2003-6-10 20:23:00 | 只看該作者
WTM1朋友,能不能再來一篇輸出到EXceL的例子。
7#
發(fā)表于 2003-6-12 21:09:00 | 只看該作者
我也渴望有一篇輸出到EXCEL的例子噢! THANK YOU!
8#
發(fā)表于 2003-6-13 19:13:00 | 只看該作者
以下是各種輸出數(shù)據(jù)到Excel的方法,多種多樣,各有特色
http://a9.shtip.com.cn/index.asp?board=4&mode=3&recordid=74FAB41E1ADC
http://a9.shtip.com.cn/index.asp?board=4&mode=3&recordid=74FAB31E14DC
http://a9.shtip.com.cn/index.asp?board=4&mode=3&recordid=72FABF1E15DC
http://a9.shtip.com.cn/index.asp?board=4&mode=3&recordid=73FAB41E14DC

以下是兩種輸出數(shù)據(jù)到 Word 的方法,各有優(yōu)點
http://a9.shtip.com.cn/index.asp?board=4&mode=3&recordid=73FABF1E16DC
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2025-7-17 00:43 , Processed in 0.078528 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表