技術(shù) 點(diǎn)
- 技術(shù)
- 點(diǎn)
- V幣
- 點(diǎn)
- 積分
- 67995

|
作者:楊忠勛
專業(yè):計(jì)算機(jī)軟件開發(fā)及應(yīng)用
語(yǔ)言能力:TOFEL633 GRE2140
Email:zhongxunyang@yahoo.com.cn
在Mis系統(tǒng)的實(shí)際開發(fā)中,我們有時(shí)需要將當(dāng)前頁(yè)面上報(bào)表的數(shù)據(jù)以Word文檔的格式下載到本地,這種實(shí)現(xiàn)并不困難。但是有時(shí)我們需要對(duì)下載的Word文檔的格式做一些設(shè)置,比如標(biāo)題顏色,字體大小,字間距等等,這時(shí)我們就要用到Word自帶的宏功能。
比如我們想將此報(bào)表的標(biāo)題在Word文檔中以如下格式顯示:14號(hào)字,加粗,居中對(duì)齊。首先我們需要在Word中錄制相應(yīng)的宏命令。打開Word,新建一文檔,手動(dòng)敲入一行字,然后選擇工具->宏->錄制新宏命令,為新宏取一個(gè)名字如Macro1,執(zhí)行以上動(dòng)作(14號(hào)字,加粗,居中對(duì)齊),Word自動(dòng)將這些動(dòng)作保存以相應(yīng)的Vbscript命令。然后選擇工具->宏->宏命令,選擇剛才我們定義的宏Macro1,就可以查看其內(nèi)容了。在此例中我們保存的宏命令如下:
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter '居中對(duì)齊
Selection.Font.Bold = wdToggle '加粗顯示
Selection.Font.Size = 14 '14號(hào)字
因?yàn)楹昝畹哪_本語(yǔ)言是Vbscript,我們不需要做任何改動(dòng)就可以將上面的語(yǔ)句在VB中使用。這樣,我們就可以編寫出如下VB代碼,實(shí)現(xiàn)我們所要求的功能。代碼如下:
WdApp.Selection.Font.Bold = wdToggle '加粗顯示
WdApp.Selection.Font.Size = 14 '14號(hào)字
WdApp.Selection.TypeText ("報(bào)表標(biāo)題") '報(bào)表標(biāo)題
WdApp.Selection.ParagraphFormat.lignment = wdAlignParagraphCenter '居中對(duì)齊
WdApp.Selection.Font.Bold = wdToggle '取消加粗
同樣,我們?nèi)缦雽?duì)Word文檔進(jìn)行其他處理,重復(fù)以上的步驟就可以了。以下提供我的一個(gè)完整的對(duì)Word文檔進(jìn)行處理的例子:
Private Function SaveAsWord(ByRef MyRecord As Recordset, ByVal DocFileName As String, ByRef OutMessage As String) As Integer
'*************************************************************************
'
'說明:將數(shù)據(jù)集中的數(shù)據(jù)另存為DOC文件
'
'參數(shù):
'
'MyRecord 數(shù)據(jù)集
'DocFileName WORD文件的名稱(無路徑,路徑見實(shí)例變量sPath)
'OutMessage 操作的的返回信息
'
'返回: 1成功 -1失敗
'
'*************************************************************************
'初始化Word應(yīng)用
err.Clear
On Error GoTo Err_All
Dim WdApp As Word.Application
Set WdApp = CreateObject("Word.Application")
'插入數(shù)據(jù)
Dim colloop As Integer '列號(hào)
Dim rowloop As Integer '行號(hào)
Dim colMax As Integer '列數(shù)
Dim rowMax As Integer '行數(shù)
Dim wdcell As Integer '寬
Dim UnitEnd As Integer '截取結(jié)束點(diǎn)
Dim UnitName As String '單位名稱
Dim BbDate As String '報(bào)表期別
wdcell = 12
colMax = MyRecord.Fields.count
rowMax = MyRecord.RecordCount
WdApp.Documents.Add
'獲取報(bào)表單位
UnitEnd = InStr(sBBDetail, "期別")
UnitName = Mid(sBBDetail, 1, UnitEnd - 2)
BbDate = Mid(sBBDetail, UnitEnd, Len(sBBDetail))
If MyRecord.Fields.count >= 10 Then
WdApp.ActiveDocument.PageSetup.Orientation = wdOrientLandscape
Else
WdApp.ActiveDocument.PageSetup.Orientation = wdOrientPortrait
End If
'報(bào)表名稱
WdApp.Selection.Font.Bold = wdToggle
WdApp.Selection.Font.Size = 14
WdApp.Selection.TypeText (sbbmc)
WdApp.Selection.ParagraphFormat.lignment = wdAlignParagraphCenter
WdApp.Selection.Font.Bold = wdToggle
WdApp.Selection.TypeParagraph
'報(bào)表單位名稱
WdApp.Selection.Font.color = wdColorBlack
WdApp.Selection.Font.Size = 11
WdApp.Selection.TypeText (UnitName)
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
WdApp.Selection.TypeParagraph
'報(bào)表期別
WdApp.Selection.TypeText (BbDate)
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
WdApp.Selection.TypeParagraph
WdApp.Selection.TypeParagraph
'生成列頭
'wdApp.Selection.HomeKey wdLine, wdExtend
'dApp.Selection.Font.Bold = wdToggle
WdApp.ActiveDocument.Tables.Add WdApp.Selection.Range, rowMax, colMax
Dim i As Integer
Do
For colloop = 0 To colMax - 1
|
|