前后期绑定Excel/Word对象的应用

前后期绑定Excel/Word对象的应用
Set W = CreateObject(“word.application”) '这种是后期绑定
'注意,运行到这里是这里把程序重置以后,不管visible=true/false这里的WORD实例对象还是存在,
'记的EXCEL如果是这种情况下是会在进程中自动关掉的(见下方描述). 此处不管Public W或是dim W均是这样
W.Visible = True

VB6,Set E = CreateObject(“excel.application”)这句发生后,
在打开文件前,进程中会有EXCEL,调试时点击重置程序的时候,不管visible是true还是false,进程中的EXCEL也没有了,
但是如果打开文件后,包含打开文件后把文件已经关闭这种情形, 只留excel实例的界面时,
则出现另一种情景,就是重置程序的时候, (以下应该是指visible=false的情形)
打开的EXCEL实例依然还在进程中,
如果在任务管理器中强制关掉这个进程,那么再手动点击打开EXCEL文件时,显示之前打开的文档的文档恢复窗口.
(最后这个恢复可能是指实例文件没有被正常关闭的状态,留意)

Dim Word对象 As New Word.Application 这种也是创建了一个新的word实例,Excel应该也是这样. (注意前期绑定)
WORD对象的使用, WORD没有实例被打开状态.
Set Word对象 = GetObject(, “word.application”),这个后期绑定会报错:ActiveX 部件不能创建对象.

如果使用Dim as new word.application或是使用set obj =createobject(“word.application”)产生的对象去打开一个已经被open的WORD文件的时候,会出现某某文件被某某用户锁定, 无法编辑, 请选择:
打开只读副本
创建本地副本, 稍后合并更改
在原始副本可用时接收通知
另外, 如果(比如手动)新建一个WORD实例,打开对象,
注意这时不能双击WORD图标去打开, 这样会直接显示原来的实例,
如果之前文件有更改,仍然会显示更改后的版本,而不会提示"是否重新打开",
因为可能只是相当于把之前打开的此文件最新版本重新调用
这时只能拖文件到新实例窗口中打开,
但是打开后WORD标题写的"文档X",这可能只是说把内容放到一个新创建的word实例中作为一个文件对象的链接来显示.

三种word(excel)对象的引用方式:
1 Dim a As New Word.Application(注意a,b这两种种要前期引用此控件,这种有好处就是能显示.后面的提示信息, 但如果没有正确的前期绑定, 则会报错, 用户定义类型未定义)
以下两种: (注意前期的绑定, 注意通用性比如EXCEL, ACCESS的理解)
2 Dim b '如果要定义类型, 则需要定义dim b as word.application
Set b = New Word.Application
b.Visible = True
3 Dim c '注意这里不可以dim c as application '会报错类型不匹配
Set c = CreateObject(“word.application”)
c.Visible = True

前期绑定后, 即便使用后期绑定方案(Createobject)后, 那些需要被设置的属性值,也可以被正常像前期绑定那样使用文本值来代替数值.比如以下:
Set Word对象 = GetObject(, “word.application”)
With Word对象
.documents.Open 当前路径 & 导出文件名
.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument '设置位置在正文, 按数值=0

VB6中的引用对象以及前期绑定 工程—引用:Microsoft Excel XX.X Object Library

语句如: Dim ExcelFunction As New Excel.Application

前期绑定似乎是跟着EXCEL文件走的,郁闷,这样的话我设置了密码,我的邮件群发功能,每次要解了密码才能使用.后来在群中提问,按提示找到了"用代码加载引用",就是说对这个问题有了一些更多的认识.(注意要信任VBA project)

VB访问word书签。 '实现代码如下 Dim cn As New ADODB.Connection Dim AdoRs As New ADODB.Recordset Dim WordTemps As New Word.Application Private Sub Form_Load() If cn.State = 1 Then cn.Close End If cn.CursorLocation = adUseClient cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" End Sub '开始导出数据 Private Sub Command1_Click() Dim strSQl As String Dim REC As Integer Dim i As Integer WordTemps.Documents.Add App.Path + "\货物合同.doc", False WordTemps.Selection.GoTo wdGoToBookmark, , , "合同标题" WordTemps.Selection.TypeText "关于冬季货物的成交合同" WordTemps.Selection.GoTo wdGoToBookmark, , , "合同编号" WordTemps.Selection.TypeText "2004000001" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约单位" WordTemps.Selection.TypeText "宏大科技公司,天天科技公司" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约地址" WordTemps.Selection.TypeText "北京中关村大厦" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约时间" WordTemps.Selection.TypeText fromat(Now, "yyyy-mm-dd") strSQl = "select * from Matrixs" AdoRs.Open strSQl, cn, adOpenKeyset, adLockOptimistic REC = AdoRs.RecordCount If REC < 1 Then MsgBox "无商品记录!", vbOKOnly, "提示" AdoRs.Close Exit Sub Else AdoRs.MoveFirst WordTemps.Selection.GoTo wdGoToBookmark, , , "货物清单" For i = 1 To REC WordTemps.Selection.TypeText AdoRs!名称 WordTemps.Selection.MoveRight unit:=wdCharacter, Count:=1 '右移一格 WordTemps.Selection.TypeText AdoRs!数量 WordTemps.Selection.MoveRight unit:=wdCharacter, Count:=1 '右移一格 WordTemps.Selection.TypeText AdoRs!规格 AdoRs.MoveNext If AdoRs.EOF = False Then WordTemps.Selection.InsertRowsBelow 1 '表格换行 End If Next i AdoRs.Close WordTemps.Visible = True '显示WORD窗口 End If End Sub '实现代码如下 Dim cn As New ADODB.Connection Dim AdoRs As New ADODB.Recordset Dim WordTemps As New Word.Application Private Sub Form_Load() If cn.State = 1 Then cn.Close End If cn.CursorLocation = adUseClient cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" End Sub '开始导出数据 Private Sub Command1_Click() Dim strSQl As String Dim REC As Integer Dim i As Integer WordTemps.Documents.Add App.Path + "\货物合同.doc", False WordTemps.Selection.GoTo wdGoToBookmark, , , "合同标题" WordTemps.Selection.TypeText "关于冬季货物的成交合同" WordTemps.Selection.GoTo wdGoToBookmark, , , "合同编号" WordTemps.Selection.TypeText "2004000001" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约单位" WordTemps.Selection.TypeText "宏大科技公司,天天科技公司" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约地址" WordTemps.Selection.TypeText "北京中关村大厦" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约时间" WordTemps.Selection.TypeText fromat(Now, "yyyy-mm-dd") strSQl = "select * from Matrixs" AdoRs.Open strSQl, cn, adOpenKeyset, adLockOptimistic REC = AdoRs.RecordCount If REC < 1 Then MsgBox "无商品记录!", vbOKOnly, "提示" AdoRs.Close Exit Sub Else AdoRs.MoveFirst WordTemps.Selection.GoTo wdGoToBookmark, , , "货物清单" For i = 1 To REC WordTemps.Selection.TypeText AdoRs!名称 WordTemps.Selection.MoveRight unit:=wdCharacter, Count:=1 '右移一格 WordTemps.Selection.TypeText AdoRs!数量 WordTemps.Selection.MoveRight unit:=wdCharacter, Count:=1 '右移一格 WordTemps.Selection.TypeText AdoRs!规格 AdoRs.MoveNext If AdoRs.EOF = False Then WordTemps.Selection.InsertRowsBelow 1 '表格换行 End If Next i AdoRs.Close WordTemps.Visible = True '显示WORD窗口 End If End Sub end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值