, ″″, -1
MS—WORD.LeftPara
MS—WORD.ScreenUpdating 0
MS—WORD.TableInsertTable , Col, Row, , , 16, 167
MS—WORD.StartOfDocument
Data1.Recordset.MoveFirst
For i = 1 To MaxCols
CellContent$ = Data1.Recordset.Fields(i - 1).Name
MS—WORD.Insert CellContent$
MS—WORD.NextCell
Next i
Do
For i = 1 To MaxCols
If IsNull(Data1.Recordset.Fields(i - 1).Value) Then
CellContent$ = ″″
Else
CellContent$ = Data1.Recordset.Fields(i - 1).Value
End If
MS—WORD.Insert CellContent$
MS—WORD.NextCell
Next i
Data1.Recordset.MoveNext
Loop Until Data1.Recordset.EOF = True
MS—WORD.TableDeleteRow
MS—WORD.StartOfDocument
MS—WORD.TableSelectRow
MS—WORD.TableHeadings 1
MS—WORD.CenterPara
MS—WORD.StartOfDocument
MS—WORD.ScreenRefresh
MS—WORD.ScreenUpdating 1
MS—WORD.MsgBox ″结束″, ″″, -1
Me.Show
End Sub
⑶命令按钮控件cmdReport的鼠标单击事件代码
Private Sub cmdReport—Click()
Dim Response
Screen.MousePointer = 11
Set MS—WORD = CreateObject(″Word.Basic″)
MS—WORD.AppActivate ″Microsoft Word″, 1
Call InsertTableIntoMS—Word
Screen.MousePointer = 0
End Sub
⑷命令按钮控件cmdExit的鼠标单击事件代码
Private Sub cmdExit—Click()
Set MS—WORD = Nothing
Unload Me
End Sub
几点说明
①在本
程序运行之前,Word 6.0必须已经成功安装,否则系统将产生一个VB可捕获的错误。Word 6.0的表格列不能超过31列,否则系统将产生一个VB可捕获的错误。读者可以在代码中加入错误处理代码以处理这些错误。
②若本程序运行时Word尚未运行,OLE自动化将试图启动它。因此程序代码中不必包括一条分开的指令来启动Word。若Word是由VB应用程序启动的,那么
程序结束时Word将自动关闭;否则,Word将继续运行。
③本实例使用的大部分WordBasic语句都与Word文档的插入点有关,如果在本程序运行过程中人为地移动了插入点,则有可能导致表格的混乱和错误。为了避免这种情况发生,本
程序在执行插入操作之前使用ScreenUpdating语句将Word屏幕更新关闭,使用户在执行插入操作时不能移动插入点。
从上述实例可以看到,通过OLE自动化,使我们在开发新的应用程序时可以“借用”现成的应用
程序的部分或全部功能,从而大大地减轻开发的工作量,缩短开发周期,使开发工作事半功倍。这就是OLE自动化带给开发人员的好处。