等米下锅!!!
小弟:
我想通过vb调用Word并且在word中的工具上增加一菜单
请问如何实现。在线等待
问题点数:0、回复次数:20Top
1 楼qiuafa()回复于 2003-08-01 13:44:23 得分 0
接分Top
2 楼zagzag(zag)回复于 2003-08-01 13:47:38 得分 0
有没有人会啊??
行不行啊?
Top
3 楼dandy1437((乐天派!直面所有问题))回复于 2003-08-01 13:53:55 得分 0
打开WORD
Dim Name As String
CommonDialog1.ShowOpen
Name = CommonDialog1.FileName
Dim wapp As New Word.Application
Dim wdoc As Word.Document
'If Not wdoc Is Nothing Then Set wdoc = Nothing
' Set wdoc = wapp.Documents.add
Set wdoc = wapp.Documents.Open(FileName:=Name)
注意在工程里面引用WORD先Top
4 楼yijiansong(不知路在何方)回复于 2003-08-01 13:57:43 得分 0
是Word里有的菜单还是自己的新菜单?Top
5 楼zagzag(zag)回复于 2003-08-01 14:01:35 得分 0
自己增加的
最好有 个例子
分还可以加
谢谢了Top
6 楼IMHELLFIRE(真正的用户痛恨真正的程序员。)回复于 2003-08-01 14:01:40 得分 0
增加新菜单可通过写Add-ins实现。Top
7 楼zagzag(zag)回复于 2003-08-01 14:04:44 得分 0
请问如何实现呢?
非常着急
请大侠赐教
有代码吗?Top
8 楼wtty9822(VB<————我的眼里只有你)回复于 2003-08-01 14:09:48 得分 0
只有帮你顶了!Top
9 楼hc_z(石泉)回复于 2003-08-01 14:37:44 得分 0
要用到插件吗?学习。Top
10 楼kmzs(.:RNPA:.山水岿濛)回复于 2003-08-01 14:40:10 得分 0
会的大家讲一讲,有没有关于office接口方面的文献?Top
11 楼IMHELLFIRE(真正的用户痛恨真正的程序员。)回复于 2003-08-01 14:57:58 得分 0
用add-ins在MSDN搜索一下看看。Top
12 楼planetike(胜哥哥)回复于 2003-08-01 15:13:20 得分 0
学习Top
13 楼Syrtis()回复于 2003-08-01 16:52:01 得分 0
Up
学习ingTop
14 楼victorycyz(--)回复于 2003-08-01 17:01:00 得分 0
小弟?Top
15 楼since1990(level)回复于 2003-08-02 00:39:35 得分 0
upTop
16 楼since1990(level)回复于 2003-08-02 00:43:47 得分 0
使用VB编程时,有时需要调用Microsoft Word对文字进行编辑、排版及输出。为实现这种调用,可以使用Shell函数、OLE自动化、在包容器中嵌入Word对象等方法。经过试用和比较,总结出了这几种方法的各自特点。
1 使用Shell函数直接调用
语法:Shell (pathname[,windowstyle]).Pathname是指要执行的程序的名字和任何必须的参数或命令行开关,可以包括目录和驱动器名;Windowstyle是执行程序的窗口风格的数字。
使用Shell调用Word比较简单,编程量小,但必须明确指定Word所在路径,这不利于移植,而且,不能对Word进行控制,不利于程序和Word之间的数据交换。
2 使用OLE自动化控制Microsoft Word
2.1 使用方法
(1)Word为OLE自动化提供一种称为“Basic”的对象,要在VB中控制Word ,首先要定义一个引用Word中“Basic”对象的对象变量:Dim Wordobj as Object
(2)将Word 中的“Basic”对象赋给该对象:Set Wordobj=CreateObject("Word.Basic")
(3)可以使用大多数WordBasic语句和函数控制Word或Word文档,使用方法和在Word宏中使用WordBasic指令的方法基本相同。
(4)关闭Word:Set Wordobj =Nothing。
注意:“Basic”对象不支持关闭它自己的一个方法。即若在OLE自动化中关闭了Word,则对象被置为Nothing,便不能再对对象进行操作,程序出错。
2.2 VB指令与WordBasic指令的差异
(1)有一些语句和函数不能使用,包括:控制结构,如While…Wend和If…Then…Else;声明语句,如Dim;定制对话框相关的语句:FileExit语句;要求数组变量作为参数的语句或函数。
(2)也有一些指令使用方法不同。①返回字符串以一个美元符($)结束的WordBasic函数的关键字必须括在方括号中。例如,在WordBasic宏中的GetBookmark$()语句:mark$=GetBookmark$("Address"),若用VB调用,必须这样写mark$=Wordobj.[Ge-tBookmark$]("Address")。②选择一个命令按钮用“True”,不选择用“False”
2.3 对OLE自动化的说明
Word可以为OLE自动化给另一个应用提供对象,但是它不能使用OLE自动化访问其它应用中的对象。例如:VB和Excel可以使用OLE自动化访问Word,但是Word不能使用OLE自动化访问它们。
3 在包容器中嵌入Word对象
在VB中,要访问在包容器中嵌入的Word对象,首先要在项目中插入对象。做法如下:在窗体中插入OLE控件,对象类型选择“MicrosoftWord图片”或“Microsoft Word文档”,再按“确定”。
然后用Object属性访问文档或图片,并使用WordBasic语句和函数作用于它。嵌入的对象必须在可被访问之前被激活,可以使用Action属性激活OLE控件。例如,使用下面指令访问一个嵌入在称为OLE1的OLE控件中的文档:
Dim Wordobj as Object
OLE1.Action =7
Set Wordobj =OLE1.Object.Application. WordBasic
其他方面,使用方法同OLE自动化。使用在包容器中嵌入的Word对象,Word显示的窗口大小、位置与OLE控件定义的大小、位置相同,而且工具栏显示位置与Word脱离。这一点与OLE自动化相比,是个不足。
总之,要想在Microsoft Visual Basic中控制Microsoft Word,最好使用OLE自动化,通过使用WordBasic指令对Word进行全面控制,而且,用户使用起来与使用Microsoft Word一样,非常方便。
Top
17 楼since1990(level)回复于 2003-08-02 00:44:34 得分 0
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Dim NewDoc As Object
Set NewDoc = objWord.Documents.ADD
Dim TitleRange As Object
Set TitleRange = NewDoc.Content
With TitleRange
'定位到文档尾
.MoveEnd Unit:=1, Count:=-1
.Collapse Direction:=0
'居中
.ParagraphFormat.Alignment = 1
'填入标题并回车
.insertafter "我的文档"
.Font.Bold = True
.insertafter vbCrLf
.Font.Size = 14
End With
下面是我前几天给别人做的例子。你看看,希望对你有帮助。
Private Sub Command1_Click()
Dim wrdApp As Object
Dim f, fso As Object
Dim filepath As String
Dim Keywords As String
filepath = "c:\words"
Keywords = "abc"
Set fso = CreateObject("Scripting.FileSystemObject")
Set folders = fso.GetFolder(filepath)
I = 0
For Each f In folders.Files
If LCase(Right(f.Name, Len(f.Name) - InStrRev(f.Name, "."))) = "doc" Then
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = False
wrdApp.Documents.Open FileName:=filepath & "\" & f.Name
If InStr(wrdApp.ActiveDocument.Content.Text, Keywords) <> 0 Then
MsgBox f.Name
End If
wrdApp.Quit
End If
Next
Set wrdApp = Nothing
End Sub
Private Sub Command2_Click()
Dim wrdApp As Object
Dim wrdRows, wrdCols, I As Long
Dim insText As String
wrdRows = 10: wrdCols = 10
insText = "TEST"
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = False
wrdApp.Documents.Open FileName:="C:\words\1.doc"
For I = 1 To wrdRows
wrdApp.ActiveDocument.Content.insertAfter vbCrLf
Next
wrdApp.ActiveDocument.Content.GoTo What:=3, Which:=2, Count:=wrdRows
wrdApp.ActiveDocument.Content.insertAfter Space(wrdCols) & "PPPPPPPPPPPPP"
wrdApp.ActiveDocument.Save
wrdApp.Quit
Set wrdApp = Nothing
End Sub
Top
18 楼flc(▄︻┻┳═一)回复于 2003-08-02 08:05:57 得分 0
xue xiTop
19 楼flxa(方子)回复于 2003-08-02 08:43:16 得分 0
GZTop
20 楼qzrxy(天之痕)回复于 2003-08-02 09:35:43 得分 0
upTop
21 楼mark3798(.net菜鸟)回复于 2003-08-02 10:00:57 得分 0
嗯。学习ingTop
22 楼diyee(锦衣夜行)回复于 2003-08-02 10:05:08 得分 0
upTop




