設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

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

[模塊/函數(shù)] 將窗體內容導出到Excel并對其進行格式化

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2004-11-11 06:48:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我們開發(fā)軟件過程中,經(jīng)常需要將窗體或子窗體的數(shù)據(jù)導出到Excel,以便進行數(shù)據(jù)分析、統(tǒng)計或生成圖表,所以使用代碼自動完成這些操作,就可以得大大提高效率,下面就這個問題,歸納總結一下,希望對大家有所幫助:

一、在Access中使用代碼打開Excel:

ublic MyXL As Object

'打開Excel

Sub GetExcel()

    Const ERR_APP_NOTRUNNING As Long = 429

   

    On Error Resume Next

    Set MyXL = GetObject(, "Excel.Application")

    If Err = ERR_APP_NOTRUNNING Then

        Set MyXL = New Excel.Application

    End If

   

    MyXL.Application.Visible = True

End Sub

使用這段代碼,可以打開一個Excel實例或者引用已經(jīng)打開的Excel實例

二、新建一個工作簿

Sub CreateNewBook

    MyXL.Application.Workbooks.Add

End Sub

三、使用代碼將窗體上的數(shù)據(jù)復制到Windows粘貼板

Sub CopyToClip

        Forms(FormName).Controls(SubFormName).SetFocus

        DoCmd.RunCommand acCmdSelectAllRecords

        DoCmd.RunCommand acCmdCopy

End Sub

四、使用代碼將Windows粘貼板的內容粘貼到Excel

Sub CopyToExcel()

    GetExcel

    MyXL.Application.Workbooks.Add

    MyXL.Application.ActiveSheet.Paste

End Sub

五、對導出到Excel中的數(shù)據(jù)進行格式化,比如,加上報表標題、設置表格線等。

Sub FormatTAB()

    SetLine      '設置表格線的子程序,在Access中實現(xiàn)對Excel文檔格式化

    '插入兩行作為標題行

    MyXL.Application.ActiveSheet.Rows("1:1").Select

    For j = 1 To 2

        MyXL.Application.Selection.Insert Shift:=xlDown

    Next j

    MyXL.Application.ActiveSheet.Range("A1") = “標題文字”

   

    '設置表標題字體

    MyXL.Worksheets(1).Range("A1").Select

    With MyXL.Application.Selection.Font

        .Name = "宋體"

        .Size = 16

    End With

End Sub

'設置表格線

Sub SetLine()

   

    On Error Resume Next

    MyXL.Application.Selection.Borders(xlDiagonalDown).LineStyle = xlNone

    MyXL.Application.Selection.Borders(xlDiagonalUp).LineStyle = xlNone

    MyXL.Application.Selection.WrapText = False

    With MyXL.Application.Selection.Borders(xlEdgeLeft)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With MyXL.Application.Selection.Borders(xlEdgeTop)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With MyXL.Application.Selection.Borders(xlEdgeBottom)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With MyXL.Application.Selection.Borders(xlEdgeRight)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With MyXL.Application.Selection.Borders(xlInsideVertical)

        .LineStyle = xlContinuous

        .Weight = xlHairline

        .ColorIndex = xlAutomatic

    End With

    With MyXL.Application.Selection.Borders(xlInsideHorizontal)

        .LineStyle = xlContinuous

        .Weight = xlHairline

        .ColorIndex = xlAutomatic

    End With

End Sub



六、關閉打開的工作簿

'關閉Excel

Sub CloseExcel()

    On Error Resume Next

    MyXL.Application.DisplayAlerts = False

    MyXL.Application.Save

    MyXL.Application.Quit

    Set MyXL = Nothing    '釋放對該應用程序

End Sub

經(jīng)過上面的講述,一個完整的導出操作就完成了。

如果大家想看看實例程序實現(xiàn)的效果,可以在我的網(wǎng)站上下載客戶管理軟件,試用一下

下載地址:[url=http://ctxi.cn/vvb/www.szyyt.com]www.szyyt.com[/url]

作者QQ:747767  253675026

MSN:guotx@hotmail.com

作者:guotianxin郭天新

在Access中用代碼執(zhí)行Excel文件中宏,實現(xiàn)對文件的格式化操作實例:





游客,如果您要查看本帖隱藏內容請回復




[此貼子已經(jīng)被作者于2004-11-12 23:35:01編輯過]

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱

點擊這里給我發(fā)消息

2#
發(fā)表于 2004-11-16 06:35:00 | 只看該作者
不錯,非常好的實例!

點擊這里給我發(fā)消息

3#
發(fā)表于 2004-11-20 07:45:00 | 只看該作者
非常不錯,收藏到專家講座中了
4#
發(fā)表于 2004-12-3 05:56:00 | 只看該作者
雖然俺不懂VBA但支持郭老師。的確很好。。
5#
發(fā)表于 2005-6-24 05:55:00 | 只看該作者
不錯,有實用價值
6#
發(fā)表于 2006-7-3 04:01:00 | 只看該作者
大部分代碼可采用在Excel中錄制宏得到代碼,然后再做一些小改動就可以了。所以代碼看似復雜,其實簡單。
7#
發(fā)表于 2006-7-3 04:03:00 | 只看該作者



我也做了個例子,但采用的不是樓主的復制粘貼的方法,采用的是ADO,同時進行了打印設置。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
8#
發(fā)表于 2006-7-9 00:46:00 | 只看該作者
[em02]這個例子好
9#
發(fā)表于 2006-7-13 16:06:00 | 只看該作者
以下是引用fan0217在2006-7-2 20:03:00的發(fā)言:





我也做了個例子,但采用的不是樓主的復制粘貼的方法,采用的是ADO,同時進行了打印設置。

用粘貼,復制的方式,對ACCESS初學者來說,還是合適的,我做的一個程序就是采用這個思路,需要的功能,先在EXCEL中用宏錄制一下,然后在復制到ACCESS VBE中修改,缺點是每次都要調用EXCEL,如果代碼沒有寫好,調用的EXCEL還會留在內存中。



更高級的是用你的方式,



再高級的好像是從二進制文件格式,直接分析EXCEL文件格式入手,用友的華表控件好像就是這樣,即使你的機器上沒有安裝EXCEL,在他軟件中看到的表格樣式,導出到EXCEL中時,是完全一樣。
10#
發(fā)表于 2006-7-13 16:50:00 | 只看該作者
樓主采用的方法地球人都知道。數(shù)據(jù)多一點,配置低一點。可以等著死機了。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

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

GMT+8, 2024-10-23 08:24 , Processed in 0.113230 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表