CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

等米下锅!!!

楼主zagzag(zag)2003-08-01 13:40:56 在 VB / 基础类 提问

小弟:  
          我想通过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

相关问题

关键词

  • word
  • 函数
  • 语句
  • 指令
  • 文档
  • 控制
  • 自动化
  • basic
  • 控件
  • wordbasic

得分解答快速导航

  • 帖主:zagzag

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo