精华内容
下载资源
问答
  • Word常用对象

    千次阅读 2015-09-30 17:56:02
     这两天一直在跟word打交道,刚开始对word不熟(现在也还是不太熟,haha), 然后分不清哪些是word自身的对象及功能哪些是我们项目中重新自定义的,今天来整理下word常用的对象(排除这个其他就是我们项目自定义的啦...
    前言
    
        这两天一直在跟word打交道,刚开始对word不熟(现在也还是不太熟,haha), 然后分不清哪些是word自身的对象及功能哪些是我们项目中重新自定义的,今天来整理下word常用的对象(排除这个其他就是我们项目自定义的啦),虽然大家一般都是在word的宏来使用word对象, 而我们项目中使用的是JavaScript,但是原理都是一样的,我们先从常用的word对象对word开发有个简单的认识。

    正题
        Visual Basic支持一个对象集合,该集合中的对象直接对应于Microsoft Word中的元素,并且通过用户界面,用户熟悉这些元素中的绝大多数。例如,Document 对象代表了一个打开的文档,Bookmark对象代表了一个文档中的书签,而Selection对象则代表了在一个文档窗口窗格中的选定内容。在Word中,每一类元素-文档、表格、段落、书签、域等等-都可以用Visual Basic的对象来表示。要在Word中自动执行任务,可以使用这些对象的方法和属性。


    1. Application对象

    该对象代表 Microsoft Word 应用程序。Application对象包含可返回最高级对象的属性和方法。

    在用户启动一个Word 时段的同时,也创建了一个Application对象。用户可以使用Application 对象的属性或方法来控制或返回应用程序范围内的特性、控制应用程序窗口的外观或者调整Word 对象模型的其他方面。可以使用Application属性来返回Word Application 对象。以下的示例从视图状态切换到打印预览状态。

    Application. PrintPreview = True

    Application对象的一些属性控制着应用程序的外观。例如,如果DisplayStatusBar属性为True(真),那么状态栏是可见的,如果WindowState属性值为wdWindowStateMaximize,那么应用程序窗口处于最大化状态。

    下列示例启动 Word(如果 Word 尚未启动),并打开一篇现有的文档。

    Set wrd = GetObject(, "Word.Application")
    wrd.Visible = True
    wrd.Documents.Open "C:\My Documents\Temp.doc"
    Set wrd = Nothing

    2. Document对象

    代表一篇文档。Document对象是Documents集合中的一个元素。Documents集合包含 Word 当前打开的所有 Document对象。

    当用户在Word中打开或创建一个文件的同时,也创建了一个Document对象。用户可以使用Document对象或Documents集合的属性或方法来打开、创建、保存、激活或者关闭文件。

    用户可以使用语法Documents (index)来返回作为一个Document对象的任何打开的文档,在这里index是该文档的名字或索引号。因为当用户添加或关闭多个文档时,某个特定文档的索引号会发生改变,所以最好使用文档的名字来对Documents集合中的Document对象进行索引。

    可用 ActiveDocument属性引用处于活动状态的文档。

    下列示例用 Activate方法激活名为“Document 1”的文档,然后将页面方向设置为横向,并打印该文档。

    Documents("Document1").Activate
    ActiveDocument.PageSetup.Orientation = wdOrientLandscape
    ActiveDocument.PrintOut

    3. Selection对象

    该对象代表窗口或窗格中的当前所选内容。所选内容代表文档中被选定(或突出显示的)的区域,若文档中没有所选内容,则代表插入点。每个文档窗格只能有一个活动的 Selection对象,并且整个应用程序中只能有一个活动的 Selection对象。

    当用户使用Word中的某个文档时,通常会先选择文字,然后再执行一项操作,比如设定以有文字的格式,或是键入新文字。在Visual Basic中,通常没有必要在修改文字之前先选定该文字;而是创建一个表示文档特定部分的Range对象并对其进行操作。但是,当用户想要自己的代码对选定内容作出响应或是改变选定内容,就可以通过Selection对象来完成任务。

    可以使用Selection属性来返回Selection对象。Selection属性可以在Application对象、Window对象和Pane对象中使用。如果随同Application对象使用Selection属性,则该Selection对象表示活动的选定内容。

    下列示例复制活动文档的第一个窗格的所选内容,并将其粘添到第二个窗格中。

    ActiveDocument.ActiveWindow.Panes(1).Selection.Copy
    ActiveDocument.ActiveWindow.Panes(2).Selection.Paste

    4. Range对象

    该对象代表文档中的一个连续范围。每一个 Range对象由一起始和一终止字符位置定义。和文档中书签的使用方法类似,Visual Basic 使用 Range对象识别文档的指定部分。但和书签不同,Range对象只在定义该对象的过程正在运行时才存在。

    Range对象同选定内容相互独立;也就是说,可以定义和修改范围而不会改变选定内容。用户也可以在文档中定义多个范围,而此时每个文档窗格中仅有一个选定内容。

    下例返回对应于活动文档第二至第四段的 Range对象。
    Set aRange = ActiveDocument.Range( _ Start:=ActiveDocument.Paragraphs(2).Range.Start, _End:=ActiveDocument.Paragraphs(4).Range.End)

    5. Bookmark对象

    代表单个书签。Bookmark对象是Bookmarks集合中的元素。Bookmarks集合包括所有在“书签”对话框(“插入”菜单)内列出的书签。

    用 Bookmarks(index) 可返回单独的 Bookmark对象,其中 index 是书签名称或索引序号。书签名称的拼写必须完全匹配(但大小写不必匹配)。

    索引序号代表书签在 Selection 或 Range 中的位置,对 Document对象来说,索引序号代表书签在“书签”对话框的书签列表内的位置。该列表按字母顺序排列(单击“名称”可对书签列表按字母顺序进行排序)。

    通过某一区域和选定内容对象的BookmarkID属性可返回 Bookmark对象在 Bookmarks集合中的索引序号。下列示例显示活动文档中名为“temp”的书签的索引序号。

    下列示例显示 Bookmarks集合中第二个书签的名称。

    MsgBox ActiveDocument.Bookmarks(2).Name

    6. Revision对象

    该对象代表由修订标记所标记的修改。Revision对象为Revisions集合中的一个元素。Revisions集合包含了某区域或文档中的所有修订标记。

    使用 Revisions(index) 可返回单独的 Revision对象,其中 index 为索引序号。索引序号代表修订内容在某区域或文档中的位置。

    Add方法不能用于 Revisions集合。启用修订时会添加 Revision对象。可将TrackRevisions属性设为 True,以跟踪文档中所做的修订。

    下列示例启用修订跟踪功能并在所选内容前插入“Action”。

    ActiveDocument.TrackRevisions = True
    Selection.InsertBefore "Action "

    7. Section对象

    本对象代表选定内容、范围或文档中的某一节。Section对象为Sections集合的一个成员。Sections集合包含了选定内容、范围或文档中的所有节。

    可用 Sections(index) 返回单独的 Section对象,其中 index 为索引号。

    可用Add方法或InsertBreak方法在文档中添加新的节。

    下例在活动文档的开头添加一节。

    Set myRange = ActiveDocument.Range(Start:=0, End:=0)
    ActiveDocument.Sections.Add Range:=myRange
    myRange.InsertParagraphAfter

    8. Paragraph对象

    代表选定内容、范围或文档内的一个段落。Paragraph对象为Paragraphs集合的一个成员。Paragraphs集合包含了所选内容、范围或文档中的所有段落。

    可用 Paragraphs(index) 返回一个 Paragraph对象,其中 index 为索引号。

    可用Add、InsertParagraph、InsertParagraphAfter 或InsertParagraphBefore方法在文档中添加一个空段落。

    下例可在所选内容的第一段前添加一个段落标记。

    Selection.Paragraphs(1).Range.InsertParagraphBefore


    小结
        这里主要对各个对象有个基本的认识,后面我们就针对里面的对象进行着重的讲解。

    展开全文
  • Word组件对象模型

    千次阅读 2014-10-10 11:25:15
    Word组件对象模型  Microsoft Office Word 2003 对象是按层次顺序排列的,层次结构顶端的两个主类是 Application 类和 Document 类。这两个类非常重要,因为在大部分时间里,您要么是在使用 Word 应用程序本身...

    1  Word组件对象模型   
    Microsoft Office Word 2003 对象是按层次顺序排列的,层次结构顶端的两个主类是 Application 类和 Document 类。这两个类非常重要,因为在大部分时间里,您要么是在使用 Word 应用程序本身,要么是以某种方式处理 Word 文档。Word 对象模型严格遵循用户界面。Application 对象提供整个应用程序的包装,每个 Document 对象表示单个 Word 文档。这些对象各自都有很多方法和属性,您可以使用这些方法和属性操作对象或与对象交互。
    Application 对象。Application 对象表示 Word 应用程序,是其他所有对象的父级。它的所有成员通常作为一个整体应用于 Word。可以使用该对象的属性和方法来控制 Word 环境。
    Document 对象。Document 对象是 Word 编程的中枢。当您打开文档或创建新文档时,就创建了新的 Document 对象,该对象被添加到 Word 的 Documents 集合中。焦点所在的文档叫做活动文档,由 Application 对象的 ActiveDocument 属性表示。
    Selection 对象。Selection 对象表示当前选择的区域,Selection 对象只存在一个。在 Word 用户界面中执行某项操作(例如,对文本进行加粗)时,应首先选择或突出显示文本,然后应用格式设置。Selection 对象始终存在于文档中。如果未选中任何对象,它表示插入点。此外,该对象还可以表示多个不连续的文本块。
    Range 对象。Range 对象表示文档中的一个连续的区域,由一个起始字符位置和一个结束字符位置定义。Range 对象的数量并不局限于一个。您可以在同一文档中定义多个 Range 对象。
    Bookmark 对象。Bookmark 对象与 Range 对象类似,它也表示文档中的一个连续区域,并具有一个起始位置和一个结束位置。书签用于在文档中标记一个位置,或者用作文档中的文本容器。Bookmark 对象可以小到只有一个插入点,也可以大到整篇文档。您还可以在文档中定义多个书签。
    对于Microsoft Office Word 2003,通常可以在..//Microsoft Office//OFFICE11// MSWORD.OLB获得相关接口类。常用的有_Application, Documents, _Document, Selection, Range等。此外,用于设置字体的_Font,段落格式的_ParagraphFormat,表格对象Tables及Table,目录对象TablesOfContents及TableOfContents等等也是常用的。

    2  Word启动与退出     
    使用Application 对象,关联接口、释放接口。具体代码如下:
    _Application theExcelApp;
    theExcelApp.CreateDispatch("word.application", NULL); //关联接口
    退出
    theExcelApp.Quit();  退出
    theExcelApp.ReleaseDispatch();  //释放接口

    3   Word表格操作    
    使用单文档对象_Document,表格集合对象Tables,表格对象Table,行对象Rows,单元格对象Cell,列集合对象Columns,列对象Column,区域对象Range等可对表格进行操作。
    插入表格。使用_Document:: GetTables返回一个Tables对象,使用Tables::Add在指定区域插入一个表格。
    获取列对象。使用Table:: GetColumns返回一个Columns对象,使用Columns:: Item返回一个Column对象。从而可以列为对象进行操作。
    单元格插入文字。使用Table:: Cell返回Cell对象,使用Cell:: GetRange返回区域对象,或者使用Cell::Select使得表格获得输入焦点,从而进行编辑。

    4  文字转换为表格    
    当需要把一个记事本(*.txt)文件转换为表格插入到Word文档中。最快捷的作法是将txt内容粘贴到word文档中,然后将内容转化为表格。步骤如下:
    首先确定一个插入txt内容的Range对象。
    使用Range::InsertFile函数。InsertFile函数声明为:
       void Range::InsertFile(LPCTSTR FileName, VARIANT* Range, VARIANT* ConfirmConversions, VARIANT* Link, VARIANT* Attachment)
    参数说明如下:
    FileName 插入文本路径。
    Range 插入文本内容的Range对象,设为NULL
    ConfirmConversions 确认转换,设为FALSE
    Link 链接到文件,设为FALSE
    Attachment 链接行为,设为FALSE
    使用Range:: ConvertToTable转换文字为表格,返回一个Table对象。ConvertToTable函数声明为:
    LPDISPATCH Range::ConvertToTable(VARIANT* Separator, VARIANT* NumRows, VARIANT* NumColumns, VARIANT* InitialColumnWidth, VARIANT* Format, VARIANT* ApplyBorders, VARIANT* ApplyShading, VARIANT* ApplyFont, VARIANT* ApplyColor, VARIANT* ApplyHeadingRows, VARIANT* ApplyLastRow, VARIANT* ApplyFirstColumn, VARIANT* ApplyLastColumn, VARIANT* AutoFit, VARIANT*, VARIANT* DefaultTableBehavior)
    参数说明如下:
    Separator 分隔符。通常设为1,即设置制表符为分隔符(如果采用其他分隔符,请适当修改)
    NumRows 表格行数目
    NumColumns 列数目
    InitialColumnWidth,Format,ApplyBorders,ApplyShading,ApplyFont,ApplyColor,ApplyBorders,ApplyFirstColumn,ApplyLastColumn, DefaultTableBehavior,均可设为VarOpt,由系统默认
    AutoFit 自动调整。设为0
    也可利用Selection对象代替Range对象进行文本转换表格,调用函数与Range对象的函数名称一致,参数略有出入。

    5 设置页码       
    通常我们需要在任意指定页开始插入新页码。网上很多文章都是只能在第二页开始设置。以下介绍我通过观察VBA宏代码得到的一种插入页码的方法(实现方法当然可能不止一种,我曾在网上看到曾有一篇文章提及这个问题,但是他的代码不能正常运行,估计是作者发布文章的时候有些不小心有遗漏)。要点在于插入分节符和取消,并且要注意返回当前节。步骤如下:
    0 在前一页使用Selection::InsertBreak插入分节符,参数值为2(参数值7为分页符)。
    1 使用_Document::GetActiveWindow返回窗口Window对象。
    2 使用Window:: GetActivePane返回当前活动Pane窗格对象
    3 使用Pane::GetView返回View视图对象,View::SetType(long(3))。
    4 使用SetSeekView(long(10))获得页眉页脚视图。
    5 使用Selection::GetHeaderFooter()获得页眉页脚对象HeaderFooter。
    6 使用HeaderFooter::SetLinkToPrevious(FALSE)取消“与上一节相同”。
    7此时输入较点Selction停留在上一节的页脚处。使用View::SetSeekView(long(0))将返回到当前节的文字视图中。
    8 使用View::SetSeekView(long(10))再次获得本节的页眉页脚视图。
    9 使用Selection::GetHeaderFooter()获得页眉页脚对象HeaderFooter。
    10 使用HeaderFooter::GetRange获得Range对象rangeheadfoot。
    11 使用Range:: GetFields获得Fields对象。
    12使用Fields:: Add获得Field对象,具体参数赋值为Add(rangeheadfoot,COleVariant(short(33)),varOpt,varOpt)。
    13 使用Fields::GetPageNumbers()获得PageNumbers页码对象。
    14使用PageNumbers对象的方法设置属性。特别要设置SetStartingNumber(long(1))。
    PageNumbers对象的其他设置可参考如下:
    SetNumberStyle(long(0));
     SetHeadingLevelForChapter(long(0));
     SetIncludeChapterNumber(FALSE);
     SetChapterPageSeparator(long(0));
     SetRestartNumberingAtSection(true);
    15 通过Range对象rangeheadfoot设置页码居中及文字大小。
    16 结束页码设置。使用View::SetSeekView(long(0))返回到文字视图。

    6 插入Excel图表    
    在Excel生成图表后,Word可将其嵌入文档中并改变其格式。用户可以通过双击图表对象激活,然后进行类似于Excel环境下的操作。具体操作如下:
    使用Selection:: GetInlineShapes。获得内嵌区域集合对象InlineShapes。
    使用InlineShapes::AddOLEObject插入表格,并获得内嵌区域对象InlineShape。AddOLEObject函数声明为:
    LPDISPATCH AddOLEObject(VARIANT* ClassType, VARIANT* FileName, VARIANT* LinkToFile, VARIANT* DisplayAsIcon, VARIANT* IconFileName, VARIANT* IconIndex, VARIANT* IconLabel, VARIANT* Range)
    参数说明如下:
    ClassType 插入类型,若为Excel对象,设为COleVariant("Excel.Sheet.8")。
    FileName 文件路径。
    LinkToFile 链接到文件。设为FALSE。
    DisplayAsIcon 显示为图标,设为FALSE。
    IconFileName 文件名图标,设为VarOpt。
    IconIndex 索引图标,设为VarOpt。
    IconLabel 标签图标,设为VarOpt。
    Range 区域,设为VarOpt。
    使用InlineShape的方法SetHeight、SetWidth调整大小。这些方法的参数值都是打印格式下的英磅数值。

    7 生成目录     
    单文档对象_Document,目录集合对象TablesOfContents,目录对象TableOfContents及Range对象。操作流程如下:
    使用_Document:: GetTablesOfContents返回TablesOfContents对象。
    TablesOfContents::Add返回TableOfContents对象。
    LPDISPATCH TablesOfContents::Add(LPDISPATCH Range, VARIANT* UseHeadingStyles, VARIANT* UpperHeadingLevel, VARIANT* LowerHeadingLevel, VARIANT* UseFields, VARIANT* TableID, VARIANT* RightAlignPageNumbers, VARIANT* IncludePageNumbers, VARIANT* AddedStyles, VARIANT* UseHyperlinks, VARIANT* HidePageNumbersInWeb, VARIANT* UseOutlineLevels)
    参数说明如下:
    Range 插入目录的Range对象。通常目录是文档生成结束时进行插入的,因此必须事先指定插入目录的区域Range对象。
    UseHeadingStyles 使用制表符前导符,设为TRUE
    UpperHeadingLevel 顶级目录,通常设为1
    LowerHeadingLevel 底级目录,根据需要赋值
    UseFields 使用区域,设为FALSE
    TableID 目录索引,以1起始
    RightAlignPageNumbers 页码右对齐,设为TRUE
    IncludePageNumbers 包含页码,
    AddedStyles 增加类型,设为NULL
    UseHyperlinks 使用超链接,设为TRUE
    HidePageNumbersInWeb Web页中隐藏页码,设为TRUE
    UseOutlineLevels 使用大纲级别,设为TRUE
    使用TableOfContents:: GetRange获取区域对象,进行其他例如文字大小控制等操作。
    TableOfContents:: UpdatePageNumbers更新页码

     

    1  Word组件对象模型   
    Microsoft Office Word 2003 对象是按层次顺序排列的,层次结构顶端的两个主类是 Application 类和 Document 类。这两个类非常重要,因为在大部分时间里,您要么是在使用 Word 应用程序本身,要么是以某种方式处理 Word 文档。Word 对象模型严格遵循用户界面。Application 对象提供整个应用程序的包装,每个 Document 对象表示单个 Word 文档。这些对象各自都有很多方法和属性,您可以使用这些方法和属性操作对象或与对象交互。
    Application 对象。Application 对象表示 Word 应用程序,是其他所有对象的父级。它的所有成员通常作为一个整体应用于 Word。可以使用该对象的属性和方法来控制 Word 环境。
    Document 对象。Document 对象是 Word 编程的中枢。当您打开文档或创建新文档时,就创建了新的 Document 对象,该对象被添加到 Word 的 Documents 集合中。焦点所在的文档叫做活动文档,由 Application 对象的 ActiveDocument 属性表示。
    Selection 对象。Selection 对象表示当前选择的区域,Selection 对象只存在一个。在 Word 用户界面中执行某项操作(例如,对文本进行加粗)时,应首先选择或突出显示文本,然后应用格式设置。Selection 对象始终存在于文档中。如果未选中任何对象,它表示插入点。此外,该对象还可以表示多个不连续的文本块。
    Range 对象。Range 对象表示文档中的一个连续的区域,由一个起始字符位置和一个结束字符位置定义。Range 对象的数量并不局限于一个。您可以在同一文档中定义多个 Range 对象。
    Bookmark 对象。Bookmark 对象与 Range 对象类似,它也表示文档中的一个连续区域,并具有一个起始位置和一个结束位置。书签用于在文档中标记一个位置,或者用作文档中的文本容器。Bookmark 对象可以小到只有一个插入点,也可以大到整篇文档。您还可以在文档中定义多个书签。
    对于Microsoft Office Word 2003,通常可以在..//Microsoft Office//OFFICE11// MSWORD.OLB获得相关接口类。常用的有_Application, Documents, _Document, Selection, Range等。此外,用于设置字体的_Font,段落格式的_ParagraphFormat,表格对象Tables及Table,目录对象TablesOfContents及TableOfContents等等也是常用的。

    2  Word启动与退出     
    使用Application 对象,关联接口、释放接口。具体代码如下:
    _Application theExcelApp;
    theExcelApp.CreateDispatch("word.application", NULL); //关联接口
    退出
    theExcelApp.Quit();  退出
    theExcelApp.ReleaseDispatch();  //释放接口

    3   Word表格操作    
    使用单文档对象_Document,表格集合对象Tables,表格对象Table,行对象Rows,单元格对象Cell,列集合对象Columns,列对象Column,区域对象Range等可对表格进行操作。
    插入表格。使用_Document:: GetTables返回一个Tables对象,使用Tables::Add在指定区域插入一个表格。
    获取列对象。使用Table:: GetColumns返回一个Columns对象,使用Columns:: Item返回一个Column对象。从而可以列为对象进行操作。
    单元格插入文字。使用Table:: Cell返回Cell对象,使用Cell:: GetRange返回区域对象,或者使用Cell::Select使得表格获得输入焦点,从而进行编辑。

    4  文字转换为表格    
    当需要把一个记事本(*.txt)文件转换为表格插入到Word文档中。最快捷的作法是将txt内容粘贴到word文档中,然后将内容转化为表格。步骤如下:
    首先确定一个插入txt内容的Range对象。
    使用Range::InsertFile函数。InsertFile函数声明为:
       void Range::InsertFile(LPCTSTR FileName, VARIANT* Range, VARIANT* ConfirmConversions, VARIANT* Link, VARIANT* Attachment)
    参数说明如下:
    FileName 插入文本路径。
    Range 插入文本内容的Range对象,设为NULL
    ConfirmConversions 确认转换,设为FALSE
    Link 链接到文件,设为FALSE
    Attachment 链接行为,设为FALSE
    使用Range:: ConvertToTable转换文字为表格,返回一个Table对象。ConvertToTable函数声明为:
    LPDISPATCH Range::ConvertToTable(VARIANT* Separator, VARIANT* NumRows, VARIANT* NumColumns, VARIANT* InitialColumnWidth, VARIANT* Format, VARIANT* ApplyBorders, VARIANT* ApplyShading, VARIANT* ApplyFont, VARIANT* ApplyColor, VARIANT* ApplyHeadingRows, VARIANT* ApplyLastRow, VARIANT* ApplyFirstColumn, VARIANT* ApplyLastColumn, VARIANT* AutoFit, VARIANT*, VARIANT* DefaultTableBehavior)
    参数说明如下:
    Separator 分隔符。通常设为1,即设置制表符为分隔符(如果采用其他分隔符,请适当修改)
    NumRows 表格行数目
    NumColumns 列数目
    InitialColumnWidth,Format,ApplyBorders,ApplyShading,ApplyFont,ApplyColor,ApplyBorders,ApplyFirstColumn,ApplyLastColumn, DefaultTableBehavior,均可设为VarOpt,由系统默认
    AutoFit 自动调整。设为0
    也可利用Selection对象代替Range对象进行文本转换表格,调用函数与Range对象的函数名称一致,参数略有出入。

    5 设置页码       
    通常我们需要在任意指定页开始插入新页码。网上很多文章都是只能在第二页开始设置。以下介绍我通过观察VBA宏代码得到的一种插入页码的方法(实现方法当然可能不止一种,我曾在网上看到曾有一篇文章提及这个问题,但是他的代码不能正常运行,估计是作者发布文章的时候有些不小心有遗漏)。要点在于插入分节符和取消,并且要注意返回当前节。步骤如下:
    0 在前一页使用Selection::InsertBreak插入分节符,参数值为2(参数值7为分页符)。
    1 使用_Document::GetActiveWindow返回窗口Window对象。
    2 使用Window:: GetActivePane返回当前活动Pane窗格对象
    3 使用Pane::GetView返回View视图对象,View::SetType(long(3))。
    4 使用SetSeekView(long(10))获得页眉页脚视图。
    5 使用Selection::GetHeaderFooter()获得页眉页脚对象HeaderFooter。
    6 使用HeaderFooter::SetLinkToPrevious(FALSE)取消“与上一节相同”。
    7此时输入较点Selction停留在上一节的页脚处。使用View::SetSeekView(long(0))将返回到当前节的文字视图中。
    8 使用View::SetSeekView(long(10))再次获得本节的页眉页脚视图。
    9 使用Selection::GetHeaderFooter()获得页眉页脚对象HeaderFooter。
    10 使用HeaderFooter::GetRange获得Range对象rangeheadfoot。
    11 使用Range:: GetFields获得Fields对象。
    12使用Fields:: Add获得Field对象,具体参数赋值为Add(rangeheadfoot,COleVariant(short(33)),varOpt,varOpt)。
    13 使用Fields::GetPageNumbers()获得PageNumbers页码对象。
    14使用PageNumbers对象的方法设置属性。特别要设置SetStartingNumber(long(1))。
    PageNumbers对象的其他设置可参考如下:
    SetNumberStyle(long(0));
     SetHeadingLevelForChapter(long(0));
     SetIncludeChapterNumber(FALSE);
     SetChapterPageSeparator(long(0));
     SetRestartNumberingAtSection(true);
    15 通过Range对象rangeheadfoot设置页码居中及文字大小。
    16 结束页码设置。使用View::SetSeekView(long(0))返回到文字视图。

    6 插入Excel图表    
    在Excel生成图表后,Word可将其嵌入文档中并改变其格式。用户可以通过双击图表对象激活,然后进行类似于Excel环境下的操作。具体操作如下:
    使用Selection:: GetInlineShapes。获得内嵌区域集合对象InlineShapes。
    使用InlineShapes::AddOLEObject插入表格,并获得内嵌区域对象InlineShape。AddOLEObject函数声明为:
    LPDISPATCH AddOLEObject(VARIANT* ClassType, VARIANT* FileName, VARIANT* LinkToFile, VARIANT* DisplayAsIcon, VARIANT* IconFileName, VARIANT* IconIndex, VARIANT* IconLabel, VARIANT* Range)
    参数说明如下:
    ClassType 插入类型,若为Excel对象,设为COleVariant("Excel.Sheet.8")。
    FileName 文件路径。
    LinkToFile 链接到文件。设为FALSE。
    DisplayAsIcon 显示为图标,设为FALSE。
    IconFileName 文件名图标,设为VarOpt。
    IconIndex 索引图标,设为VarOpt。
    IconLabel 标签图标,设为VarOpt。
    Range 区域,设为VarOpt。
    使用InlineShape的方法SetHeight、SetWidth调整大小。这些方法的参数值都是打印格式下的英磅数值。

    7 生成目录     
    单文档对象_Document,目录集合对象TablesOfContents,目录对象TableOfContents及Range对象。操作流程如下:
    使用_Document:: GetTablesOfContents返回TablesOfContents对象。
    TablesOfContents::Add返回TableOfContents对象。
    LPDISPATCH TablesOfContents::Add(LPDISPATCH Range, VARIANT* UseHeadingStyles, VARIANT* UpperHeadingLevel, VARIANT* LowerHeadingLevel, VARIANT* UseFields, VARIANT* TableID, VARIANT* RightAlignPageNumbers, VARIANT* IncludePageNumbers, VARIANT* AddedStyles, VARIANT* UseHyperlinks, VARIANT* HidePageNumbersInWeb, VARIANT* UseOutlineLevels)
    参数说明如下:
    Range 插入目录的Range对象。通常目录是文档生成结束时进行插入的,因此必须事先指定插入目录的区域Range对象。
    UseHeadingStyles 使用制表符前导符,设为TRUE
    UpperHeadingLevel 顶级目录,通常设为1
    LowerHeadingLevel 底级目录,根据需要赋值
    UseFields 使用区域,设为FALSE
    TableID 目录索引,以1起始
    RightAlignPageNumbers 页码右对齐,设为TRUE
    IncludePageNumbers 包含页码,
    AddedStyles 增加类型,设为NULL
    UseHyperlinks 使用超链接,设为TRUE
    HidePageNumbersInWeb Web页中隐藏页码,设为TRUE
    UseOutlineLevels 使用大纲级别,设为TRUE
    使用TableOfContents:: GetRange获取区域对象,进行其他例如文字大小控制等操作。
    TableOfContents:: UpdatePageNumbers更新页码



    http://blog.csdn.net/luckisok/article/details/3213177

    展开全文
  • Microsoft Word 对象

    千次阅读 2008-03-24 14:05:00
    目 录 运用Application对象 运用Document对象 运用Range对象 运用Selection对象 运用Find和Replacement对象 运用Table, Column, ...使用自动化 Visual Basic支持对象集合,该集合中的对象直接对应于Microsoft Word

    目 录

    运用Application对象
    运用Document对象
    运用Range对象
    运用Selection对象
    运用Find和Replacement对象
    运用Table, Column, Row,和 Cell对象
    运用其他普通对象
    判断对象是否有效
    修改Word 命令
    运用事件
    使用自动宏
    使用自动化
    Visual Basic支持一个对象集合,该集合中的对象直接对应于Microsoft Word 97中的元素,并且通过用户界面,用户熟悉这些元素中的绝大多数。例如,Document 对象代表了一个打开的文档,Bookmark对象代表了一个文档中的书签,而Selection对象则代表了在一个文档窗口窗格中的选定内容。在Word中,每一类元素-文档、表格、段落、书签、域等等-都可以用Visual Basic的对象来表示。要在Word中自动执行任务,可以使用这些对象的方法和属性。

    关于理解和使用Microsoft Office 97对象模型的一般性内容,请参阅本书的第二章“理解对象模型”。在Microsoft Office 97中的对象模型相当丰富,其中包含了大约180个对象。要查看Word对象模型的层次关系图,请参阅“帮助”中的“Microsoft Word 对象”。要获得对某种特定对象的详细描述,可以在此图中单击该对象的名字,或是在“帮助”的索引中对特定对象进行搜索。

    怎样显示Word Visual Basic帮助

    要使用Word Visual Basic帮助,必须在安装过程中选择“自定义”的安装方式,并且为Word选中“Visual Basic在线帮助”复选框。否则,安装程序不会安装Visual Basic帮助。如果用户已经安装好了Word,那么可以再次运行Setup程序来安装Visual Basic帮助。

    要查看Word Visual Basic 帮助,可以在“Visual Basic 编辑器里的“帮助”菜单中点击“目录和索引”一项。在“帮助主题”对话框的“目录”一表中,双击“Microsoft Word Visual Basic 参考”,然后再双击“Visual Basic 参考”。“帮助主题”对话框会重新出现,显示出Microsoft Word Visual Basic的目录和索引。

     

    运用Application 对象

    在用户启动一个Word 时段的同时,也创建了一个Application对象。用户可以使用Application 对象的属性或方法来控制或返回应用程序范围内的特性、控制应用程序窗口的外观或者调整Word 对象模型的其他方面。可以使用Application属性来返回Word Application 对象。以下的示例从视图状态切换到打印预览状态。

    Application. PrintPreview = True

    Application对象的一些属性控制着应用程序的外观。例如,如果DisplayStatusBar属性为True(真),那么状态栏是可见的,如果WindowState属性值为wdWindowStateMaximize,那么应用程序窗口处于最大化状态。以下的示例设置了屏幕上应用程序窗口的大小。

    With Application

    .WindowState = wdWindowStateNormal

    .Height = 450

    .Width = 600

    End With

    Application对象的属性也可以访问处于对象层次中较低级的对象,比如Windows集合(代表了当前所有打开的窗口)和Documents集合(代表了当前所有打开的文档)。用户可以使用属性,有时候也叫做访问者,从对象层次中最高一级的Application对象向下访问到较低级的对象(Document对象、Window对象、 Selection对象等等)。可以使用以下两个示例之一来打开MyDoc.doc。

    Application. Documents. Open FileName :="C:/DOCS/MYDOC.DOC"

    Documents. Open FileName :="C:/DOCS/MYDOC.DOC"

    因为Document属性是共用的,所以Application属性是可选的。共用属性和方法无需Application 对象限定符。要在“对象浏览器”中浏览共用属性和方法的列表,可以在“类别”栏中单击“<共用>”。共用项就会列在“成员”栏中。

    注释 Option对象包含了控制Word 共用行为的一些属性。许多Option对象的属性对应于Option对话框中的各项(Tools 菜单)。使用Application 对象的Option属性可以返回Option 对象。以下的示例设置了三个应用程序范围内的选项(因为Option属性是共用的,所以在本示例中无需Application属性)。

    With Application.Options

    .AllowDragAndDrop = True

    .ConfirmConversions = False

    .MeasurementUnit = wdPoints

    End With


    运用Document对象

    当用户在Word中打开或创建一个文件的同时,也创建了一个Document对象。用户可以使用Document对象或Documents集合的属性或方法来打开、创建、保存、激活或者关闭文件。

    返回Document对象

    用户可以使用语法Documents (index)来返回作为一个Document对象的任何打开的文档,在这里index是该文档的名字或索引号。在以下的示例中,变量myDoc包含一个Document对象,该对象代表名为“Report.doc”的打开的文档。

    Set myDoc = Documents ("Report.doc")

    索引号代表了文档在Documents集合中的位置。在以下的示例中,变量myDoc包含了一个Document对象,该对象代表Documents集合中的第一个文档。

    Set myDoc = Documents(1)

    注释 因为当用户添加或关闭多个文档时,某个特定文档的索引号会发生改变,所以最好使用文档的名字来对Documents集合中的Document对象进行索引。

    除了通过文档的名字或索引号来引用文档,还可以使用ActiveDocument属性来返回一个引用活动文档(当前着眼的文档)的Document对象。以下的示例显示产活动文档的名字;如果没有打开的文档,则该示例显示一条消息。

    If Documents. Count >= 1 Then

    MsgBox ActiveDocument. Name

    Else

    MsgBox "No documents are open"

    End If

    打开文档

    要打开一个已经存在的文档,可以使用Open方法。Open方法应用于通过Document属性返回的Documents集合。以下的示例打开了文件Test.doc(从当前文件夹)并且启动了更改跟踪。

    Set myDoc = Documents. Open (FileName :="TEST.DOC")

    myDoc. TrackRevisions = True

    注意到在上例中Open方法的返回值是一个Document对象,该对象表示刚被打开的文档。在此示例中的文件名不包含路径;因此,是假定了该文件在当前的文件夹中。但这会导致出现一个运行时错误,因为一旦用户创建了与当前文件夹不同的文件夹,Visual Basic就再也找不到该文件了。但是,用户可以通过指明完整的路径,就如同下表所示的那样,来确保打开正确的文件。

    操作系统
    FileName参数

    Windows
    FileName :="C:/Documents/Temporary File.doc"

    Macintosh
    FileName :="Hard Drive:Documents:Temporary File"


    如果用户的宏只用于一种文件系统,那么可以在FileName参数中指定路径分隔符(“/”或者“:”),就如同上表所示的那样。以下示例显示了与文件系统无关的代码,可以用来打开Sales.doc,并且假定Sales.doc已经保存在Word 的程序文件夹中。

    programPath = Options. DefaultFilePath (wdProgramPath)

    Documents. Open FileName :=programPath & Application. PathSeparator & "SALES.DOC"

    PathSeparator属性返回当前文件系统(例如,“/”用于MS-DOS/Windows的文件分配表,或者“:”用于Macintosh)的正确的文件分隔符。DefaultFilePath属性返回文件的位置,比如文档所在文件夹的路径、程序文件夹或者当前文件夹。

    如果所指定的文件名既没有在当前文件夹(如果没有指定路径)出现也没有在指定的文件夹(如果指定了路径)中出现,那么就会发生错误。以下的示例使用FileSearch对象的属性和方法来判断名为“Test.doc”的文件是否存在于用户的默认文档文件夹中。如果找到了该文件(FoundFiles. Count = 1),那么就打开它;否则,显示一条消息。

    defaultDir = Options. DefaultFilePath (wdDocumentsPath)

    With Application. FileSearch

    .FileName = "Test.doc"

    .LookIn = defaultDir

    .Execute

    If .FoundFiles. Count = 1 Then

    Documents. Open FileName :=defaultDir & Application. PathSeparator & "TEST.DOC"

    Else

    MsgBox "Test.doc file was not found"

    End If

    End With

    也可以允许用户选择要打开的文件,而不是定死Open方法的FileName参数值。如同以下示例所示的那样,可以使用带有wdDialogFileOpen常量的Dialogs属性来返回一个Dialog 对象,该对象表示“打开”对话框(在“文件”菜单中)。Show方法可以显示并且执行在“打开”对话框中完成的动作。

    Dialogs (wdDialogFileOpen). Show

    Display 方法只是用来显示特定的对话框而不作任何更多的操作。以下的示例检查Display方法的返回值。如果用户单击“确定”来关闭对话框,返回值-1并且打开所选择的文件,该文件的名字保存在变量fSelected中。

    Set dlg = Dialogs (wdDialogFileOpen)

    aButton = dlg. Display

    fSelected = dlg. Name

    If aButton = -1 Then

    Documents. Open FileName :=fSelected

    End If

    要对如何显示Word对话框作进一步了解,请参阅“帮助”中的“显示内置Word 对话框”一节的内容。

    要判断某个特殊的文档是否打开,可以使用一条For Each…Next语句来对Documents集合进行列举。如果名为“Sample.doc”的文档已经被打开了,以下的示例就激活它;如果它尚未被打开,则该示例会打开它。

    docFound = True

    For Each aDoc In Documents

    If InStr (1, aDoc. Name, "sample.doc", 1) Then

    aDoc. Activate

    Exit For

    Else

    docFound = False

    End If

    Next aDoc

    If docFound = False Then Documents. Open _

    FileName :="C:/Documents/Sample.doc"

    可以使用Count属性来确定当前打开文档的数目。Count属性应用于Documents集合,可以使用Document属性返回该集合。如果没有已打开的文档,以下的示例会显示一条消息。

    If Documents. Count = 0 Then MsgBox "No documents are open"

    创建和保存文档

    要创建一个新文档,可以对Documents集合应用Add 方法。以下的示例创建了一个新文档。

    Documents. Add

    Add方法返回了仅作为一个Document对象而创建的文档。当用户添加一个文档时,可以设置Add 方法的返回值是一个对象变量,以便用户可以在自己的代码中引用该新文档。以下的示例创建了一个新文档,并且设置它的上边距为1.25英寸。

    Dim myDoc As Document

    Set myDoc = Documents. Add

    myDoc. PageSetup. TopMargin = InchesToPoints(1.25)

    第一次保存新文档时,可以随Document对象使用SaveAs方法。以下的示例将名为“Temp.doc”的活动文档保存在当前文件夹中。

    ActiveDocument. SaveAs FileName :="Temp.doc"

    在文档被保存之后,用户可以使用它的文档名来调整Document对象。以下的示例创建了一个新文档并且立刻把它保存为“1996 Sales.doc”。然后,该示例使用新名字来作Documents集合中的该文档的索引,并且向该文档添加一张表格。

    Documents. Add.SaveAs FileName :="1996 Sales.doc"

    Documents ("1996 Sales.doc").Tables.Add _

    Range :=Selection. Range, NumRows :=2, NumColumns :=4

    要保存对一个已经存在的文档所进行的更改,可以随同Document对象使用Save方法。以下的指令保存了名为“Sales.doc”的文档。

    Documents ("Sales.doc"). Save

    如果用户随同一个尚未保存的文档或模板使用Save方法,将会显示“另存为”对话框来提示用户为该文件取名。要保存所有打开的文档,可以对Documents集合应用Save方法。以下的示例保存了所有打开的文档,但没有提示用户为文件取名。

    Documents. Save NoPrompt :=True

    激活一个文档

    要使另一个文档成为活动文档,可以对Document对象应用Activate方法。以下的示例激活了打开的文档(MyDocument.doc)。

    Documents ("MyDocument.doc"). Activate

    以下的示例打开了两个文档,然后激活其中的第一个文档(Sample.doc)。

    Set Doc1 = Documents. Open (FileName :="C:/Documents/Sample.doc")

    Set Doc2 = Documents.Open (FileName :="C:/Documents/Other.doc")

    Doc1. Activate

    打印一个文档

    要打印一个文档,可以对Document对象应用PrintOut 方法,如以下示例所示。

    ActiveDocument. PrintOut

    要通过程序来设置那些也可以在“打印”对话框(在“文件”菜单中)里进行设置的打印选项,可以使用PrintOut 方法的参数来实现。用户可以使用Options 对象的属性来设置打印选项,这些选项也可以在“选项”对话框(在“工具”菜单中)“打印”一表里进行设置。以下示例设置活动文档打印隐藏的文字,并且只打印出前三页。

    Options. PrintHiddenText = True

    ActiveDocument. PrintOut Range :=wdPrintFromTo, From :="1", To :="3"

    关闭文档

    要关闭一个文档,可以对Document对象应用Close方法。以下的示例关闭了名为“Sales.doc”的文档。

    Documents ("Sales.doc"). Close

    如果对文档进行过修改,Word会显示出一条消息来询问用户是否要保存所进行的修改。用户可以随SaveChanges参数使用wdDoNotSaveChanges或 wdSaveChanges常量来使该提示不再出现。以下的示例保存并且关闭了Sales.doc。

    Documents ("Sales.doc"). Close SaveChanges :=wdSaveChanges

    要关闭所有已打开的文档,可以对Documents集合应用Close方法。以下的示例没有保存修改就关闭了所有的文档。

    Documents. Close SaveChanges :=wdDoNotSaveChanges

    访问文档中的对象

    用户可以从Document对象来访问返回对象的一系列属性和方法。要查看在Document对象中所能使用的对象的层次关系图,可以参阅“帮助”中的“Microsoft Word对象(Documents)”。例如,Table属性,它能够返回一个Table对象的集合,可以在Document对象中使用。随着一个集合对象使用的Count属性能够判断在该集合中所包含的项数。以下的示例显示一条消息来指出在活动文档中有多少表格。

    MsgBox ActiveDocument. Tables. Count & " table(s) in this document"

    使用Table(index)可以返回一个单张表格对象,这里的index是索引号。在以下的示例中,myTable代表“Sales.doc”文档里的第一张表格。

    Set myTable = Documents ("Sales.doc"). Tables(1)

    关于返回一个特殊对象的信息可以从“帮助”中的对象主题本身 (例如,“Table 对象”)和相应的集合对象主题(例如,“Table集合对象”)中获得。

    向文档添加对象

    可以使用随着能在Document对象中访问的集合对象的Add方法来向文档添加诸如脚注、备注或表格这样的对象。例如,以下命令在myRange变量(myRange是一个包含了一个Range对象的对象变量)所指定的位置上添加了一张3x3的表格。

    ActiveDocument. Tables. Add Range :=myRange, NumRows :=3, NumColumns :=3

    以下的示例在myRange变量所指定的位置上添加了一个脚注。

    ActiveDocument. Footnotes. Add Range :=myRange, Text :="The Willow Tree"A

    要获得支持Add方法的集合对象列表,请参阅“帮助”中的“Add 方法”。

     

    运用Range对象

    当使用Visual Basic时一个常见的任务就是在文档中指定一块区域,然后对它进行处理,比如插入文字或应用格式等。例如,用户可能想编写一个宏,来对文档中某个部分里的某个单词或短语进行定位。那就可以使用一个Range对象来表示想在其中搜索特定单词或短语的部分文档。在确定Range对象后,用户能够应用该对象的方法和属性来修改相应范围中的内容。

    一个Range对象代表了文档中的一块连续的区域。每一个Range对象都由一个起始字符位置和一个终止字符位置来定义。与用户在文档中使用书签的方法类似,可以在Visual Basic中使用Range对象来识别一个文档的特定部分。一个Range对象既可以和插入点一样小,也可以和整个文档一样大。但是,与书签不同,Range对象仅仅在定义它的过程正在运行时才存在。

    Range对象同选定内容相互独立;也就是说,可以定义和修改范围而不会改变选定内容。用户也可以在文档中定义多个范围,而此时每个文档窗格中仅有一个选定内容。

    Start、End和StoryType属性唯一地确定了一个Range对象。Start和End属性分别返回或者设置Range对象的起始和结束字符的位置。每个文档构成部分起始处的字符位置是0 (zero),而第一个字符之后的位置是1,依此类推。StoryType 属性的WdStoryType常量可以表示十一种不同的文档构成部分类型。例如,如果在注脚区域中有一个Range对象,那么StoryType属性返回wdFootnotesStory。要对文档构成部分作进一步了解,请参阅本节后面的“运用文档构成部分”一节的有关内容。

    使用Range对象来代替Selection对象

    宏录制器会经常创建一个使用Selection属性来控制操纵Selection对象的宏。但是,用户通常可以用一个或几个Range对象来以很少的命令完成相同的任务。以下的示例是用宏录制器创建的。该宏对文档中的前两个单词进行加粗。

    Selection. HomeKey Unit :=wdStory

    Selection. MoveRight Unit :=wdWord, Count:=2, Extend :=wdExtend

    Selection. Font.Bold = wdToggle

    以下的示例没有使用Selection对象而完成了相同的任务。

    ActiveDocument. Range (Start:=0, End :=ActiveDocument. Words(2). End) .Bold = True

    以下的示例对文档中的前两个单词进行加粗,然后插入一个新的段落。

    Selection. HomeKey Unit :=wdStory

    Selection. MoveRight Unit :=wdWord, Count :=2, Extend :=wdExtend

    Selection. Font.Bold = wdToggle

    Selection. MoveRight Unit :=wdCharacter, Count:=1

    Selection. TypeParagraph

    以下的示例没有使用Selection对象就完成了上述示例中的同样任务。

    Set myRange = ActiveDocument. Range(Start:=0, End :=ActiveDocument. Words(2). End)

    myRange. Bold = True

    myRange. InsertParagraphAfter

    前面的两个示例改变了活动文档中的格式但没有改变选定内容。在大多数的场合下,Range对象比Selection对象更可取,原因如下:

    用户可以定义和使用多个Range对象,而在每个文档窗口中只能有一个Selection对象。
    控制管理Range对象不会改变所选择的文字内容。
    控制管理Range对象比运用Selection对象速度要快。
    使用Range方法返回Range对象

    可以使用Range方法在特定文档中创建一个Range对象。Range方法(可以从Document对象使用)返回一个Range对象,该对象定位于主文档构成部分中,有给定的起始点和结束点。以下示例创建了一个Range对象,并且赋给myRange变量。

    Set myRange = ActiveDocument. Range (Start :=0, End :=10)

    在上述示例中,myRange表示活动文档中的前十个字符。当对保存在myRange变量中的Range对象应用一种属性或方法时,就可以看到已经创建的Range对象。以下的示例对活动文档中的前十个字符进行加粗。

    Set myRange = ActiveDocument. Range(Start :=0, End :=10)

    myRange. Bold = True

    当用户需要对一个Range对象进行多次引用时,可以使用Set语句来设置一个等价于Range对象的变量。但是,如果用户需要在一个对象上执行一次操作,那么就没有必要将对象保存到变量中。用户可以使用一条确定范围并且改变Bold属性的命令来取得同样的结果;如以下示例所示。

    ActiveDocument. Range(Start :=0, End :=10). Bold = True

    和书签类似,一个范围能够在文档中横跨一组字符,也可以标记其中的一个位置。在以下的示例中,Range对象的起始和终止点相同,并且该范围内不包含任何文字。该示例在活动文档的起始处插入文字。

    ActiveDocument. Range(Start :=0, End :=0). InsertBefore Text :="Hello "

    用户可以通过使用如上述示例所示的字符位置数字,或者随同Selection对象、Bookmark对象或Range对象使用Start属性和End属性,来定义一个范围的起始和终止位置。以下示例创建了一个Range对象,来表示活动文档中的第三和第四个句子。

    Set myDoc = ActiveDocument

    Set myRange = myDoc. Range (Start :=myDoc. Sentences(3). Start, _

    End :=myDoc. Sentences (4). End)

    技巧 Range对象在文档中的表示不可见。但是,用户可以使用Select方法来选定一个Range对象,以保证Range对象表示正确的文字范围。在以下示例中的Range对象表示活动文档中的前三个段落。在该宏运行完毕之后,选定内容是指包含在aRange变量中的文字范围。

    Set aRange = ActiveDocument.Range (Start :=0, _

    End :=ActiveDocument. Paragraphs (3). Range. End)

    aRange. Select

    使用Range属性来返回一个Range对象

    在许多对象都可以使用Range属性-例如,Paragraph对象、Bookmark对象、Endnote对象以及Cell对象-Range属性用来返回一个Range对象。以下的示例返回了一个Range对象,该对象表示活动文档的第一段。

    Set myRange = ActiveDocument.Paragraphs (1). Range

    在创建了对Range对象的引用之后,用户可以使用它的任何属性或方法来修改该范围。以下的示例复制了活动文档中的第一段。

    Set myRange = ActiveDocument. Paragraphs (1). Range

    myRange. Copy

    以下的示例复制了活动文档中表格一的第一行。

    ActiveDocument. Tables(1). Rows(1). Range. Copy

    以下的示例显示了活动文档中由第一个书签标记的文字。Range属性可以在Bookmark对象中使用。

    MsgBox ActiveDocument. Bookmarks (1). Range. Text

    如果用户需要对同一个Range对象应用多种属性或方法,那么可以使用With…End With语句。以下的示例为活动文档的第一段设定了文字的格式。

    Set myRange = ActiveDocument. Paragraphs (1). Range

    With myRange

    .Bold = True

    .ParagraphFormat. Alignment = wdAlignParagraphCenter

    .Font. Name = "Arial"

    End With

    要获得关于返回Range对象的其他示例,请参阅“帮助”中的“Range属性”。

    修改文档的一部分

    Visual Basic包含了一些对象,可以使用它们来修改以下类型的文档元素:字符、单词、句子、段落以及节。下面的表格包含了对应于这些文档元素的属性和属性所返回的对象。

    表 达 式
    返 回 的 对 象

    Word (index)
    Range对象

    Characters (index)
    Range对象

    Sentences (index)
    Range对象

    Paragraphs (index)
    Paragraph对象

    Sections (index)
    Section对象


    当用户不带index来使用这些属性时,就返回一个同名的集合-例如,Paragraphs属性返回Paragraphs集合。但是,如果用户使用index来确定在某个集合中的一项,就返回上述表格第二列中的对象-例如,Words(1)返回一个Range对象。用户可以使用任何范围属性或方法来修改Range对象,如以下示例所示,该示例将选定内容中的第一个单词复制到剪贴板中。

    Selection. Words (1). Copy

    在Paragraphs集合以及Sections集合中的集合项分别是Paragraph对象和Section对象,而不是Range对象。但是,在Paragraph对象和Section对象中都可以使用Range属性(它返回一个Range对象)。以下的示例将获得文档中的第一段复制到剪贴板中。

    ActiveDocument. Paragraphs(1). Range. Copy

    上述表格中所有的文档元素属性都可以在Document对象、Selection对象以及Range对象中使用,如以下三个示例所示。

    本例设置活动文档中第一个单词的大小写。
    ActiveDocument. Words(1). Case = wdUpperCase

    本例设置选中的第一节的下边距为0.5英寸。
    Selection.Sections(1). PageSetup. BottomMargin = InchesToPoints(0.5)

    本例设置活动文档中的文字为两倍行距(Content属性返回一个Range对象,该对象表示主文档构成部分)。
    ActiveDocument. Content. ParagraphFormat. Space2

    修改一组文档元素

    要修改由一组文本元素(字符、单词、句子、段落或节)构成的范围,可以创建一个包含文档元素的Range对象。随同Range对象使用Start和End属性,用户可以新建一个Range对象,该对象引用了一组文档元素。以下的示例创建了一个Range对象(myRange),该对象引用了活动文档中的前三个单词,然后将这些单词的字体改为Arial。

    Set Doc = ActiveDocument

    Set myRange = Doc.Range (Start :=Doc. Words(1). Start, End :=Doc. Words(3). End)

    myRange. Font. Name = "Arial"

    以下的示例创建了一个Range对象,该对象起始于第二段的开头,到第四段之后结束。

    Set myDoc = ActiveDocument

    Set myRange = myDoc. Range (Start :=myDoc. Paragraphs(2). Range. Start, _

    End :=myDoc. Paragraphs(4). Range. End)

    以下的示例创建了一个Range对象(aRange),该对象起始于第二段的开头,到第三段之后结束。ParagraphFormat属性用来访问诸如SpaceBefore和SpaceAfter这样的设置段落格式的属性。

    Set Doc = ActiveDocument

    Set aRange = Doc. Range (Start :=Doc. Paragraphs(2). Range. Start, _

    End :=Doc. Paragraphs(3). Range. End)

    With aRange. ParagraphFormat

    .Space1

    .SpaceAfter = 6

    .SpaceBefore = 6

    End With

    返回或设置范围中的文字

    可以使用Text属性来返回或设置一个Range对象中的内容。以下的示例返回了活动文档中的第一个单词。

    strText = ActiveDocument. Words(1). Text

    以下示例将活动文档中的第一个单词改为“Hello”。

    ActiveDocument. Words(1). Text = "Hello"

    可以使用InsertAfter 方法或者InsertBefore方法在一个范围的前面或后面插入文字。以下的示例在活动文档的第二段之前插入文字。

    ActiveDocument. Paragraphs(2). Range. InsertBefore Text :="In the beginning "

    在使用InsertAfter 方法或者InsertBefore方法之后,范围随之扩大,包含新的文字。但是,也可以使用Collapse方法将范围折叠到起始位置或终止位置。以下的示例在现有文档之前插入单词“Hello”,然后将范围折叠到它的起始位置(在单词“Hello”之前)。

    With ActiveDocument.Paragraphs(2).Range

    .InsertBefore Text:="Hello "

    .Collapse Direction:=wdCollapseStart

    End With

    设置范围中文字的格式

    可以使用Font属性来取得设置字符格式的属性和方法,而使用ParagraphFormat属性来取得设置段落格式的属性和方法。以下的示例设置了活动文档中第一段的字符格式和段落格式。

    With ActiveDocument. Paragraphs(1). Range. Font

    .Name = "Times New Roman"

    .Size = 14

    .AllCaps = True

    End With

    With ActiveDocument. Paragraphs(1). Range. ParagraphFormat

    .LeftIndent = InchesToPoints(0.5)

    .Space1

    End With

    重新定义Range对象

    可以使用SetRange方法来重新定义一个已经存在的Range对象。以下的示例定义myRange为当前的选定内容。SetRange方法重新定义myRange,使它表示当前的选定内容加上随后的十个字符。

    Set myRange = Selection. Range

    myRange. SetRange Start :=myRange. Start, End :=myRange. End + 10

    要获得重新定义Range对象的其他信息和示例,请参阅“帮助”中“SetRange方法”。

    用户也可以通过改变Start属性和End属性的值,或者使用MoveStart方法或MoveEnd方法来重新定义一个Range对象。以下的示例重新定义myRange对象,使它表示当前的选定内容加上随后的十个字符。

    Set myRange = Selection. Range

    myRange. End = myRange. End + 10

    以下的示例使用MoveEnd方法扩展了myRange,使它包含下一段。

    Set myRange = ActiveDocument. Paragraphs(2)

    myRange. MoveEnd Unit :=wdParagraph, Count :=1

    在范围内的段落中循环

    可以通过几种不同的方法在范围内的段落中进行循环。本节包含使用For Each...Next语句和Next属性及方法在范围内的段落中进行循环的内容。也可以使用同样的技术在范围内的字符、单词或句子中进行循环。

    使用For Each...Next语句

    建议在范围内进行段落循环时使用For Each...Next语句,另外建议在集合内进行循环时也同样使用该语句。以下的示例在获得文档的前五段中进行循环,在每段之前添加文字。

    Set myDoc = ActiveDocument

    Set myRange = myDoc.Range (Start:=myDoc. Paragraphs(1). Range. Start, _

    End :=myDoc. Paragraphs(5). Range. End)

    For Each para In myRange. Paragraphs

    para.Range. InsertBefore "Question:" & vbTab

    Next para

    假定用户想修改上述的代码,在范围内对用户选定的段落进行循环。可以使用Selection属性来表示选定内容中的各个段落。以下的示例在选定内容的段落中进行循环,去除加粗格式。

    For Each para In Selection. Paragraphs

    para.Range. Bold = False

    Next para

    使用Next属性或方法

    用户也可以使用Next属性和方法在范围的段落中进行循环。以下的示例说明了怎样在范围的单词中进行循环,将每个单词增大一点字号。

    Set myRange = ActiveDocument.Words(1)

    For i = 1 To 5

    myRange. Font. Size = myRange. Font. Size + i

    Set myRange = myRange. Next(Unit :=wdWord, Count :=1)

    Next i

    以下的示例在范围的段落中进行循环,将范围的对齐方式由居中改为左对齐。该示例也使用Next属性重新定义了myRange,使它表示下一段。

    Set myRange = ActiveDocument. Paragraphs(1). Range

    For i = 1 To 5

    If myRange. Paragraphs(1). Alignment = wdAlignParagraphCenter Then

    myRange. Paragraphs(1). Alignment = wdAlignParagraphLeft

    End If

    Set myRange = myRange. Paragraphs(1). Next. Range

    Next i

    将Range对象赋值给变量

    可以通过几种途径来把一个已经存在的Range对象赋给一个变量。在以下示例中,变量Range1和变量Range2都表示Range对象。在该示例中命令把活动文档中第一和第二个单词分别赋值给变量Range1和Range2。

    Set Range1 = ActiveDocument. Words(1)

    Set Range2 = ActiveDocument. Words(2)

    设置一个Range对象变量等价于另一个Range对象变量

    以下的示例创建变量Range2,并且与Range1相同。

    Set Range2 = Range1

    现在就有两个变量表示着同样的范围。当用户调整Range2的起始位置、终止位置或者文字时,所做的更改也同样会影响到Range1,反之亦然。

    以下的示例将Range1默认属性 (Text属性)的值赋给Range2的默认属性。在此示例中的代码等价于Range2. Text = Range1. Text,它没有改变Range对象实际所表示的内容,它仅仅改变Range2的contents (text)。

    Range2 = Range1

    这两个范围(Range2和Range1)包含有相同的内容,但是它们可能指向文档中的不同位置,或者干脆是不同的文档。

    使用Duplicate属性

    以下的示例创建了一个新复制的Range对象,Range2,该对象有着和Range1一样的起始位置、终止位置以及文字内容。

    Set Range2 = Range1. Duplicate

    如果改变了Range1的起始位置或是终止位置,这种改变并不会影响到Range2,反之亦然。但是,因为这两个范围指向文档的相同位置,改变一个范围中的文字内容也会同时改变另一个范围的文字内容。

    运用文档构成部分

    一个文档构成部分是文档中的一个区域,该区域中的文字区别于文档中的其他区域。例如,如果一个文档包含了正文文字、脚注和页眉,则该文档就包含了文档正文部分、脚注部分和页眉部分。

    可以使用StoryType属性来返回指定范围、选定内容或书签的文档构成部分。如果在脚注部分中包含了选定内容,那么下例将关闭活动窗口中的脚注窗格。

    ActiveWindow. View. Type = wdNormalView

    If Selection. StoryType = wdFootnotesStory Then ActiveWindow. ActivePane. Close

    StoryRanges集合包含了一个文档中每种有效的文档构成部分类型的第一个过程部分范围。可以使用NextStoryRange方法来返回以后的文档构成部分。以下的示例搜索活动文档中的每个文档过程部分来找出文字“Microsoft Word”。该示例也将它每次找到的文字全部设置为斜体。

    For Each myStoryRange In ActiveDocument. StoryRanges

    myStoryRange. Find. Execute FindText :="Microsoft Word", Forward :=True

    While myStoryRange. Find. Found

    myStoryRange. Italic = True

    myStoryRange. Find.Execute FindText :="Microsoft Word", _

    Forward :=True, Format :=True

    Wend

    While Not (myStoryRange. NextStoryRange Is Nothing)

    Set myStoryRange = myStoryRange. NextStoryRange

    myStoryRange. Find.Execute FindText :="Microsoft Word", Forward :=True

    While myStoryRange. Find. Found

    myStoryRange. Italic = True

    myStoryRange. Find.Execute FindText :="Microsoft Word", _

    Forward :=True, Format :=True

    Wend

    Wend

    Next myStoryRange

     

    运用Selection对象

    当用户使用Word中的某个文档时,通常会先选择文字,然后再执行一项操作,比如设定以有文字的格式,或是键入新文字。在Visual Basic中,通常没有必要在修改文字之前先选定该文字;而是创建一个表示文档特定部分的Range对象并对其进行操作。但是,当用户想要自己的代码对选定内容作出响应或是改变选定内容,就可以通过Selection对象来完成任务。

    可以使用Selection属性来返回Selection对象。在文档窗口的每个窗格中只能有一个Selection对象,在任何时刻,也只能有一个活动的Selection对象。选定内容可以包含文档的一块区域,也可以被折叠到一个插入点。以下的示例改变了选定内容中各个段的段落格式。

    Selection. Paragraphs. SpaceBefore = InchesToPoints (0.25)

    Selection属性可以在Application对象、Window对象和Pane对象中使用。如果随同Application对象使用Selection属性,则该Selection对象表示活动的选定内容。

    Selection. InsertAfter Text :="Next Text"

    也可以随同一个Window对象或Pane对象使用Selection属性来返回一个在特定窗口或窗口窗格中Selection对象。以下的示例随同Window对象使用Selection属性,在文档窗口“Document2”中插入文字。

    Windows ("Document2"). Selection.InsertAfter Text :="New Text"

    以下的示例随同Pane对象使用Selection属性,在主页眉窗格中插入文字。

    With ActiveWindow

    .View. Type = wdPageView

    .View. SeekView = wdSeekPrimaryHeader

    .ActivePane. Selection. InsertAfter Text :="Header"

    End With

    在使用InsertAfter方法或InsertBefore方法之后,选定内容随之扩大,包括了新的文字。但是,用户也可以使用Collapse方法将选定内容折叠到它的起始或终止位置。以下的示例在选定内容的文字之后插入单词“Hello”,任何将选定内容折叠到单词“Hello”之后的插入点。

    Selection. InsertAfter Text :="Hello"

    Selection. Collapse Direction :=wdCollapseEnd

    移动和扩展选定内容

    用户可以通过几种方法来移动或扩展由Selection对象所表示的选定内容(例如,Move和MoveEnd)。以下的示例将选定内容移动到下一段的开头。

    Selection. MoveDown Unit :=wdParagraph, Count :=1, Extend :=wdMove

    用户也可以通过改变Selection对象的Start属性及End属性的值,或者通过MoveStart和MoveEnd方法来移动或扩展选定内容。以下的示例通过把终止位置移动到段尾来对选定内容进行扩展。

    Selection. MoveEnd Unit :=wdParagraph, Count :=1

    因为在一个文档窗口或窗格中只能有一个选定内容,用户也可以通过选定另一个对象来移动选定内容。可以使用Select方法,选择文档的一项。在使用Select方法之后,就可以使用Selection属性返回一个Selection对象。以下的示例选定了活动文档中的第一个单词,然后把该单词变为“Hello”。

    ActiveDocument. Words(1). Select

    Selection. Text = "Hello "

    用户也可以通过GoToNext方法、GoToPrevious方法或GoTo方法来移动选定内容。以下的示例将选定内容移动到文档中的第四行。

    Selection. GoTo What :=wdGoToLine, Which :=wdGoToAbsolute, Count :=4

    以下的示例将选定内容恰好移动到活动文档中的下一个域之前。

    Selection. GoToNext What :=wdGoToField

    在Selection对象使用的对象

    可以在Range对象和Document对象中使用的许多其他对象也能在Selection对象中使用,这使得用户可以在一个选定内容中控制操纵对象。要获得能在Selection对象使用的对象的完整列表,请参阅“帮助”中的“Microsoft Word 对象(Selection)”,或者“Selection对象”。

    以下的示例更新了选定内容中各个域的结果。

    If Selection. Fields. Count >= 1 Then Selection. Fields. Update

    以下的示例将一节中的各个段落缩进了0.5英寸。

    Selection. Paragraphs. LeftIndent = InchesToPoints (0.5)

    用户可以使用For Each...Next语句在选定内容中的单个对象上进行循环操作,来代替对选定内容中的所有对象逐个进行控制操纵。以下的示例在选定内容的每个段落上进行循环操作,将找到的任何居中的段落变为左对齐。

    For Each para In Selection. Paragraphs

    If para. Alignment = wdAlignParagraphCenter Then para. Alignment = _

    wdAlignParagraphLeft

    Next para

    以下的示例显示出选定内容中每个书签的名字。

    For Each aBook In Selection. Bookmarks

    MsgBox aBook. Name

    Next aBook

    Selection对象的属性和方法

    本节突出介绍Selection对象的一些常用属性和方法。

    返回或设置选定内容中的文字

    可以使用Text属性来返回或设置一个Selection对象的内容。以下的示例返回所选的文字。

    strText = Selection. Text

    以下的示例将所选文字改为“Hello World”。

    Selection. Text = "Hello World"

    可以InsertBefore 方法或InsertBefore方法,在选定内容之前或之后插入文字。以下的示例在选定内容之前插入了文字。

    Selection. InsertBefore Text :="And furthermore "

    为许多文字设定格式

    可以使用Font属性来访问设置字符格式的属性和方法,也可以使用ParagraphFormat属性来访问设置段落格式的属性和方法。以下的示例设置了选定内容的字符和段落格式。

    With Selection. Font

    .Name = "Times New Roman"

    .Size = 14

    End With

    Selection. ParagraphFormat. LeftIndent = InchesToPoints (0.5)

    返回一个Range对象

    如果一种方法或属性是在Range对象而不是Selection对象中使用的(例如,CheckSpelling方法),那么可以使用Range属性来从Selection对象返回一个Range对象。以下的示例对所选单词进行拼写检查。

    Selection. Range. CheckSpelling

    返回关于选定内容的信息

    可以使用Information属性来返回关于选定内容的信息。例如,用户可以判断当前页的页码、文档的总页数,或是判断选定内容是否在一个页眉或注脚中。Information属性可取三十五种不同的常量(wdActiveEndPageNumber, wdNumberOfPagesInDocument 和 wdInHeaderFooter等等),用户可以使用它们来返回关于选定内容的不同信息。举个例子,如果选定内容处于一张表格中,那么以下的示例将显示表格中的行号或列号。

    If Selection. Information (wdWithInTable) = True Then

    MsgBox "Columns = " & Selection. Information (wdMaximumNumberOfColumns) _

    & vbCr & "Rows = " & Selection. Information (wdMaximumNumberOfRows)

    End If

    要获得可以随Information属性一起使用的常量的完整列表和说明,请参阅“帮助”中的“Information属性”。

    判断文字是否被选定

    可以使用Type属性来设置或返回选定内容在文档中被指定的方式。例如,可以使用wdSelectionBlock常量来判断一个文字块是否被选定。如果选定内容是一个插入点,那么以下的示例选定包含该插入点的段落。

    If Selection. Type = wdSelectionIP Then

    Selection. Paragraphs(1). Range. Select

    End If

     

    运用Find和Replacement对象

    可以使用Find和Replacement对象来查找并且替换文档中文字的特定范围。Find对象可以在Selection对象或Range对象中使用(根据Find对象是从Selection对象还是从Range对象返回的,查找操作也略有不同)。

    使用Selection.Find

    如果是在Selection对象中使用Find对象,那么当找到符合选择条件的文本后选定内容将会改变。以下的示例选定下一次出现的单词“Hello”。如果在找到单词“Hello”之前已经到达了文档的末尾,那么停止搜索。

    With Selection. Find

    .Forward = True

    .Wrap = wdFindStop

    .Text = "Hello"

    .Execute

    End With

    Find对象包含与“查找”和“替换”对话框(在“编辑”菜单中)里的选项有关的属性。用户既可对Find对象的属性逐一进行设置,也可以随同Execute方法使用参数来进行设置,如果以下示例所示。

    Selection. Find. Execute FindText :="Hello", Forward :=True, Wrap :=wdFindStop

    使用Range.Find

    如果是在Range对象中使用Find对象,选定内容不会改变,但是当找到符合选择条件的文本时范围会被重新定义。以下的示例确定活动文档中第一次出现的单词“blue”的位置。如果查找操作成功,将重新定义范围并且设置单词“blue”的格式为粗体。

    With ActiveDocument. Content. Find

    .Text = "blue"

    .Forward = True

    .Execute

    If .Found = True Then .Parent.Bold = True

    End With

    以下的示例执行了和上述示例相同的操作,只是使用了Execute方法的参数。

    Set myRange = ActiveDocument. Content

    myRange. Find. Execute FindText :="blue", Forward :=True

    If myRange. Find. Found = True Then myRange. Bold = True

    使用Replacement对象

    Replacement对象表示查找-替换操作的替换条件。Replacement对象的属性和方法对应于“查找”和“替换”对话框(在“编辑”菜单中)里的选项。

    可以在Find对象中使用Replacement对象。以下的示例将所有出现单词“hi”的地方替换为“hello”。当找到符合选择条件的文本时,选定内容将会改变,因为代码从Selection对象返回Find对象。

    With Selection. Find

    .ClearFormatting

    .Text = "hi"

    .Replacement. ClearFormatting

    .Replacement. Text = "hello"

    .Execute Replace :=wdReplaceAll, Forward :=True, Wrap :=wdFindContinue

    End With

    以下的示例去除了活动文档中所有的粗体格式。Bold属性对Find对象为True(真),对Replacement属性为False(假)。要查找和替换格式,需设置查找和替换文本为空字符串(“”),并且设置Execute方法的Format参数为True(真)。选定内容保持不变,因为代码在Range对象中返回Find对象(Content属性返回一个Range对象)。

    With ActiveDocument. Content. Find

    .ClearFormatting

    .Font. Bold = True

    With .Replacement

    .ClearFormatting

    .Font. Bold = False

    End With

    .Execute FindText :="", ReplaceWith :="", Format :=True, Replace :=wdReplaceAll

    End With

     

    运用Table、Column、Row和Cell对象

    Word对象模型包含了表格对象,也包含了表格中各种不同元素的对象。可以随同Document对象、Range对象、Selection对象使用Table属性来返回Table集合。Table(index)返回了一个单独的Table对象,在这里index是表格的索引号。索引号代表在选定内容、范围或文档中表格的位置。以下的示例将选定内容中的第一个表格转换为文本。

    If Selection. Tables. Count >= 1 Then

    Selection. Tables(1). ConvertToText Separator :=wdSeparateByTabs

    End If

    可以随同Column对象、 Range 对象、Row对象或 Selection对象使用Cells属性来返回Cells集合。用户可以通过使用Table对象的Cell方法或是索引Cells集合来获得一个Cell对象。以下的两条语句都能够设置myCell为一个Cell 对象,该Cell对象代表活动文档中表格一的第一个单元格。

    Set myCell = ActiveDocument. Tables(1). Cell(Row :=1, Column :=1)

    Set myCell = ActiveDocument. Tables(1). Columns(1). Cells(1)

    注释 要在一个表格的一个单元格中插入文字,可以使用Text属性、InsertAfter方法或者随Range对象使用InsertBefore方法。可以随Cell对象使用Range属性来返回一个Range对象。以下的示例在表格一的每一个单元格中插入连续的单元格序号。

    i = 1

    For Each c In ActiveDocument. Tables(1). Range. Cells

    c. Range. InsertBefore Text :="Cell " & i

    i = i + 1

    Next c

    可以随同Table对象、Range对象或Selection对象使用Column属性来返回Columns集合。Columns(index)返回了一个单独的Column对象,在这里index是索引号。以下的示例选择了表格一的第一列。

    ActiveDocument. Tables(1). Columns(1). Select

    可以随同Table对象、Range对象或Selection对象使用Row属性来返回Rows集合。Rows(index)返回了一个单独的Row对象,在这里index是索引号。以下的示例给表格一的第一行加底纹。

    ActiveDocument. Tables(1). Rows(1). Shading. Texture = wdTexture10Percent

    修改图形表格的行与列

    当用户试图使用在一个图形表格(或者任何表格,其中有两个以上相邻的单元格被合并,但是行与列没有统一)中某一单独的行或列时,就可能出现一个运行时错误。如果活动文档中的第一个表格的每列含有不一致的行号,以下的示例就会出错。

    ActiveDocument. Tables(1). Rows(1). Borders.Enable = False

    用户可以首先使用SelectColumn或SelectRow方法来选定某个特定行或列的单元格,以此避免这样的错误。当用户选好了行或列,再随Selection对象使用Cells属性。以下的示例选定了活动文档中表格一的第一行。该示例使用Cells属性返回所选的单元格(在第一行中所有单元格),以便可以删除边框。

    If ActiveDocument. Tables(1). Uniform = False

    ActiveDocument. Tables(1). Cell(1, 1). Select

    With Selection

    .SelectRow

    .Cells. Borders. Enable = False

    End With

    End If

    以下的示例选定了表格一的第一列。该示例使用了一个For Each...Next循环来向选定内容(第一列的所有单元格)中的每个单元格添加文字。

    If ActiveDocument. Tables(1). Uniform = False

    ActiveDocument. Tables(1). Cell(1, 1). Select

    Selection. SelectColumn

    i = 1

    For Each oCell In Selection. Cells

    oCell.Range. Text = "Cell " & i

    i = i + 1

    Next oCell

    End If

     

    运用其他普通对象

    本节提供了关于运用一些普通Word对象的信息和技巧。

    使用HeaderFooter对象

    HeaderFooter对象既可以表示一个页眉也可以表示一个注脚。HeaderFooter对象是HeaderFooter集合的一个成员,它可以在Section对象中使用。Headers(index)或Footer(index)属性返回了一个单独的HeaderFooter对象,在这里index是WdHeaderFooterIndex常量的一个值。

    以下的示例创建了一个Range对象(aRange),该对象表示活动文档第一节的主要注脚。在该示例设置Range对象之后,它删除了已有的注脚文本。它还向注脚添加了AUTHOR域以及两个表和FILENAME域。

    Set oRange = ActiveDocument. Sections(1). Footers (wdHeaderFooterPrimary). Range

    With oRange

    .Delete

    .Fields. Add Range :=oRange, Type :=wdFieldFileName, Text :="/p"

    .InsertAfter Text :=vbTab

    .InsertAfter Text :=vbTab

    .Collapse Direction :=wdCollapseStart

    .Fields.Add Range :=oRange, Type :=wdFieldAuthor

    End With

    注释 PageNumbers集合仅仅能在HeaderFooter对象中使用。可以对PageNumbers集合应用Add方法来向一个页眉或注脚添加页码。

    使用Styles集合

    Styles集合可以在Document对象中使用。以下的示例改变了活动文档中“标题1”样式的格式。

    ActiveDocument. Styles (wdStyleHeading1). Font. Name = "Arial"

    Styles集合不能在Template对象中使用。如果想修改一个模板中的样式,可以使用OpenAsDocument方法按文档来打开模板,这样用户就可以对样式进行修改。以下的示例改变了活动文档所附的模板中“标题1”样式的格式。

    Set aDoc = ActiveDocument. AttachedTemplate. OpenAsDocument

    With aDoc

    .Styles(wdStyleHeading1). Font. Name = "Arial"

    .Close SaveChanges :=wdSaveChanges

    End With

    指定CommandBars

    在使用CommandBars集合(表示菜单栏和工具栏)之前,可以使用CustomizationContext属性来设置保存着对菜单栏和工具栏的更改的Template或Document对象。以下的示例给“格式”工具栏添加了“双下划线”命令。因为自定义更改保存在Normal模板中,所有的文档都会受到影响。

    CustomizationContext = NormalTemplate

    CommandBars ("Formatting"). Controls. Add Type :=msoControlButton, _

    ID :=60, Before :=7

    要了解关于菜单栏和工具栏的更改范围的更多信息,请参阅第八章,“菜单栏和工具栏”。

    使用Dialogs集合

    可以使用Dialogs属性返回Dialogs集合,该集合表示内置Word对话框(例如,“打开”和“保存”对话框等)。用户不能新建内置对话框,也不能向Dialogs集合添加内置对话框。要了解关于创建用ActiveX控件创建自定义对话框的内容,请参阅第十二章,“ActiveX 控件和对话框”。

    返回MailMerge和MailMerge对象

    可以使用Document对象的MailMerge属性来返回一个MailMerge对象。无论所指定的文档是否是一个邮件合并文档,都可以使用MailMerge属性。在用户使用Execute方法执行合并之前,可以使用State属性来确定邮件合并操作的状态。如果活动文档是附加了数据源的主文档,那么以下的示例将执行邮件合并。

    Set myMerge = ActiveDocument.MailMerge

    If myMerge. State = wdMainAndDataSource Then myMerge. Execute

    使用Document对象的Envelope属性可以返回一个Envelope对象。无论用户是否向所指定的文档添加了一个信封,都可以使用Envelope对象。但是,如果用户使用以下属性而没有向文档添加信封,那么会出现错误:Address属性, AddressFromLeft属性, AddressFromTop属性,FeedSource属性, ReturnAddress属性,ReturnAddressFromLeft属性, ReturnAddressFromTop属性或 UpdateDocument属性。

    以下的示例使用On Error GoTo语句来捕获用户没有向活动文档添加信封的错误。但是,如果用户已经向文档添加了信封,将显示收件人地址。

    On Error GoTo ErrorHandler

    MsgBox ActiveDocument. Envelope. Address

    ErrorHandler:

    If Err = 5852 Then MsgBox "Envelope is not in the specified document"

    在文档中添加和编辑域

    用户可以通过对Field集合应用Add方法来给文档添加域。以下的示例添加了一个DATE域来替换选定内容。

    ActiveDocument. Fields. Add Range:=Selection. Range, Type :=wdFieldDate

    在添加一个域之后,用户可以通过使用Result或Code属性来返回或设置域结果和域代码,这两种属性都可以返回一个Range对象。以下的示例更改选定内容的第一个域代码,更新该域,然后显示域结果。

    If Selection. Fields. Count >= 1 Then

    With Selection. Fields (1)

    .Code. Text = "CREATEDATE /*MERGEFORMAT"

    .Update

    MsgBox . Result. Text

    End With

    End If

    InlineShape对象同Shape对象的对比

    一个Shape对象代表图形层的一个对象,诸如自选图形、任意多边形、OLE对象、ActiveX控件、图片等。Shape对象锁定于文本范围内,但是能够任意移动,使用户可以将它们定位于页面的任何位置。要了解运用Shape对象的信息,请参阅第十章,“形状和图形层”,也可以参阅“帮助”中的“Shape对象”。

    一个InlineShape对象代表文档文字层的一个对象。一个嵌入式形状可能是图片、OLE对象或ActiveX控件。可以将InlineShape对象视为字符,并将其象字符一样放在一行文本中。要了解关于InlineShape对象的信息,请参阅“帮助”中的“InlineShape集合对象”或“InlineShape对象”。

    在Word窗体中使用FormField对象

    用户可以创建一个Word在线窗体,该窗体包含复选框、文本文本框和下拉式列表框。使用“窗体”工具栏可以插入这些窗体元素。对应的Visual Basic对象是CheckBox, TextInput, 和DropDown。所有这些对象都可以在FormFields集合的任何一个FormField对象中使用;但是,用户应当使用按照窗体域的类型使用相应的对象。例如,以下命令从活动文档的“Check1”域中选择复选框。

    ActiveDocument. FormFields ("Check1").CheckBox. Value = True

    除了“窗体”工具栏中的窗体元素之外,用户还可以向一个在线窗体添加ActiveX控件。使用“控件工具箱”可以插入ActiveX控件。用户可以把控件插入文字层或图形层;控件将分别由一个InlineShape 对象或一个Shape对象来表示。要了解关于运用ActiveX控件的更多内容,请参阅第十二章,“ActiveX控件和对话框”。

     

    判断对象是否有效

    可以通过在用户代码中包含判断语句来判断由一个表达式返回的特定对象或者一个变量所引用的对象是否有效,以此避免代码在运行时的错误。本节讨论了一些检查表达式返回值或变量保存值有效性的技术。

    用户可以随同一个变量或表达式使用TypeName函数来确定对象的类型。如果Selection. NextField返回了一个Field对象,那么以下的示例将在状态栏中显示一条消息。

    If TypeName (Selection. NextField) = "Field" Then StatusBar = "A field was found"

    以下示例的功能等价于上述示例;不同之处仅在于它使用一个对象变量(myField)来保存NextField方法的返回值。

    Set myField = Selection. NextField

    If TypeName (myField) = "Field" Then StatusBar = "A field was found"

    如果指定的变量或表达式不代表一个对象,它对Nothing求值。如果NextField方法没有返回Nothing(也就是说,如果NextField方法返回了一个Field对象,它只是其他的可能返回值),那么以下的示例将对myField应用Update方法。

    Set myField = Selection. NextField

    If Not (myField Is Nothing) Then myField. Update

    Word包含共用的IsObjectValid属性。可以使用该属性来判断一个被某个变量所引用的对象是否有效。如果变量所引用的对象已经被删除了,那么该属性返回False。以下的示例向活动文档添加一个表格,并且把它赋值给变量aTable。该示例从文档中删除了第一个表格。如果aTable引用的表格不是文档中的第一个表格(也就是说,如果aTable仍然是一个有效的对象),那么该示例删除表格的边框。

    Set aTable = ActiveDocument. Tables. Add(Range :=Selection. Range, NumRows :=2, _

    NumColumns:=3)

    ActiveDocument. Tables(1).Delete

    If IsObjectValid (aTable) = True Then aTable. Borders. Enable = False

     

    修改Word命令

    用户可以通过把命令转变为宏来对绝大多数Word命令进行修改。例如,可以“文件”菜单中的“打开”命令,使Word显示当前文件夹中的每一个文件,而不是只显示Word文档文件列表(在Windows中,控制名为.doc的文件)。

    要在“宏”对话框(在“工具”菜单中)里显示内置Word命令的列表,可以在该对话框中“宏的位置”一栏里选中“Word 命令”。在该对话框中就会列出每一个可用的菜单、工具栏或快捷键命令。每个菜单命令用与该命令关联的菜单名开头。例如,在“文件”菜单中的“保存”命令显示为“FileSave”。

    用户可以通过给宏取和Word命令相同的名字来用一个宏替换一条Word命令。例如,如果用户创建了一个名为“FileSave”的宏,当用户:在“文件”菜单中单击“保存”、在“常用”工具栏中单击“保存”按钮或按下给FileSave指定的快捷键时,Word将运行该宏。

    修改Word命令

    在“工具”菜单中,用鼠标指向“宏”,然后单击“宏的位置”。
    在“宏的位置”一栏中,单击“Word 命令”。
    在“宏名”一栏中,选中要修改的Word命令(例如,FileSave)。
    在“宏的位置”一栏中,选择要保存宏的模板或文档的位置。例如,单击Normal.dot(共用模板)来创建一个共用宏(FileSave命令将会自动地对所有文档进行修改)。
    单击“创建”。
    Visual Basic编辑器被打开,其中显示出一个模块,该模块包含有一个与刚才被选中的命令同名的新过程。如果选中了FileSave命令,那么就出现FileSave宏,如以下示例所示。
    Sub FileSave()

    FileSave Macro

    Saves the active document or template

    保存活动文档或模板

    ActiveDocument.Save

    End Sub

    用户可以添加附加的命令或删除已有的ActiveDocument. Save命令。FileSave命令每次运行时,FileSave宏都将Word命令来执行。要恢复原来的FileSave命令,需要更改FileSave宏的名字或删除它。

    注释 用户还可以通过创建与Word命令(例如,FileSave)同名的代码模块来用一个名为“Main”的子例程替换一条Word命令。

     

    运用事件

    一个事件既可以是一个被对象识别的操作(比如,打开一个文档或者从应用程序退出),也可以是一个能够编写代码来响应的操作。一个用户的操作或一段程序代码都可以导致事件的发生,事件也可以由系统引起。Word所支持的事件均列在下表中,该表还列出了ActiveX控件事件,它们将在第十二章“ActiveX控件和对话框”中进行讨论。

    要了解关于运用Word事件的信息,请参阅下列“帮助”主题:“使用Document对象的事件”、“使用ActiveX控件的事件”以及“使用Application对象的事件”。

    Document事件

    当用户打开或关闭一个已经存在的文档时,或者用户在新建一个文档时,就发生了文档事件,如以下示例所示。

    事件描述

    当关闭一个文档时发生Close事件。
    当创建一个基于模板的新文档时发生New事件。
    当打开一个文档时发生Open事件。
    一个文档事件过程的范围取决于它保存的位置。如果在一个文档中保存Open或Close事件过程,那么该过程仅当用户关闭或打开该文档时才发生;如果在一个模板中保存Open或Close事件,那么当打开或关闭基于该模板的文档或该模板本身时,该过程才发生。一个新事件过程必须保存在模板中;一个保存在文档中新事件过程决不会运行,因为文档只能基于模板来创建。

    以下的示例在打开文档时将Word应用程序的窗口扩至最大状态。

    Private Sub Document_Open()

    Application. WindowState = wdWindowStateMaximize

    End Sub

    ActiveX控件事件

    Word为Word文档中的ActiveX控件执行LostFocus 和 GotFocus事件。

    事件描述

    在焦点移开嵌入式 ActiveX 控制时发生LostFocus事件。
    当焦点移至内嵌式 ActiveX 控制时发生GotFocus事件。
    以下的示例保持CommandButton1处于禁用状态,直到用户在TextBox1中键入一个值。

    Private Sub TextBox1_LostFocus()

    If TextBox1. Value = "" Then

    CommandButton1. Enabled = False

    Else

    CommandButton1. Enabled = True

    End If

    End Sub

    其他ActiveX控件事件的文档在“Microsoft 窗体帮助”中。有关在自定义对话框和文档中使用ActiveX控件的内容,请参阅第十二章“ActiveX控件和对话框”。

    Application事件

    当用户退出应用程序或焦点移至另一个文档时发生Application事件。但是,与Document和ActiveX控件事件不同,Application事件默认事件处于禁用状态。在用户随同Application对象使用事件之前,必须新建一个类模块并声明一个包含事件的 Application 类型对象。用户可以在Visual Basic编辑器中使用类模块命令(插入菜单)的形式来新建一个类模块。

    启用Application对象的事件,最好向类模块中添加以下声明。

    Public WithEvents App As Application

    定义了包含事件的新对象后,它将出现在类模块的“对象”下拉列表框中,然后可为新对象编写事件过程。(在“对象”框中选定新对象后,其有效事件将出现在“过程”下拉列表框中。)

    但是在过程运行之前,必须将类模块中的已声名对象和 Application 对象相连接。要完成上述任务,可以在任何模块中使用下列声明(在这里“EventClass”是用户创建的用来启用事件的类模块的名字)。

    Public X As New EventClass

    当用户已经创建了X对象变量后(EventClass类的一个实例),可以设置EnventClass类的App对象于Word Application对象等价。

    Sub InitializeApp()

    Set X. App = Application

    End Sub

    在用户运行InitializeApp过程之后,EventClass类模块中的App对象指向了Word Application对象,而且只要事件发生,类模块中的事件过程也将会运行。

    在用户禁用Application对象的事件之后,可以为下表中的事件创建事件过程。

    事件描述

    当新建一个文档、打开一个已有文档或使另一个文档成为活动文档时DocumentChange事件发生。
    当用户退出Word时Quit事件发生。
    以下的实例确保了在用户退出Word之前,“常用”工具栏和“格式”工具栏均为可见。结果,当重新启动Word时,这些工具栏将不会出现。

    Private Sub App_Quit()

    CommandBars ("Standard"). Visible = True

    CommandBars ("Formatting"). Visible = True

    End Sub

     

    使用自动宏

    通过给一个宏赋予一个特殊的名字,用户可以在执行诸如启动Word或打开一个文档这样的操作时自动运行它。Word将下列名称识别为自动宏,或者“自动”宏。

    宏 名
    运 行 时 刻

    AutoExec
    每次启动Word或装载一个全局模板时

    AutoNew
    每次新建一个文档时

    AutoOpen
    每次打开一个已有文档时

    AutoClose
    每次关闭一个文档时

    AutoExit
    每次退出Word或卸载一个全局模板时


    关于使用自动宏的详细信息,请参阅“帮助”中的“自动宏”。

     

    使用自动化

    在运用Word数据之外,用户还可能想让自己的应用程序同其他的应用程序,比如Microsoft Excel, Microsoft PowerPoint, 或Microsoft Access交换数据。用户可以通过使用自动化(以前的OLE自动化)来同其他应用程序进行通信。

    从另一个应用程序中对Word进行自动化

    自动化运行用户通过引用另一个应用程序的对象、属性和方法来返回、编辑和输出数据。用户能够在另一个应用程序中进行引用的Application对象称为自动化对象。使Word能够被另一个应用程序所使用的第一步,就是创建对Word类型库的一个引用。要创建对Word类型库的引用,可以在“Visual Basic编辑器”里,单击 “工具”菜单中的“引用”,然后在“Microsoft Word 8.0 Object Library”旁边的复选框内打上钩。

    下一步,声明一个引用Word Application对象的对象变量,如下例所示。

    Dim appWD As Word. Application. 8

    使用带有Word OLE程序标识符的Visual Basic CreateObject函数或GetObject函数,如下例所示。如果想看到Word时段,设置Visible属性为True(真)。

    Dim appWD As Word. Application. 8

    Set appWD = CreateObject ("Word. Application.8")

    appWd. Visible = True

    CreateObject函数返回一个Word Application对象,并且将它赋给appWD。通过使用Word Application对象的对象、属性和方法,用户可以用该变量对Word进行控制。以下的实例新建一个Word文档。

    appWd. Documents. Add

    CreateObject函数启动一个Word时段,当引用Application对象的对象变量失效时,该时段内的自动化不会关闭。设置该对象引用Nothing关键字也不会关闭Word。而是使用Quit方法来关闭Word。以下的Microsoft Excel示例把“工作表1”中A1:B10单元格里的数据插入到一个Word新文档中,然后调整表格中的数据。如果使用了CreateObject函数,则该示例使用Quit方法来关闭Word的新实例。如果GetObject函数返回错误429,那么该示例使用CreateObject来启动一个Word新实例。

    Dim appWD As Word. Application

    Err.Number = 0

    On Error GoTo notloaded

    Set appWD = GetObject (, "Word. Application.8")

    notloaded:

    If Err. Number = 429 Then

    Set appWD = CreateObject ("Word. Application.8")

    theError = Err. Number

    End If

    appWD. Visible = True

    With appWD

    Set myDoc = .Documents. Add

    With .Selection

    For Each c In Worksheets ("Sheet1"). Range ("A1:B10")

    .InsertAfter Text :=c.Value

    Count = Count + 1

    If Count Mod 2 = 0 Then

    .InsertAfter Text :=vbCr

    Else

    .InsertAfter Text :=vbTab

    End If

    Next c

    .Range. ConvertToTable Separator :=wdSeparateByTabs

    .Tables(1). AutoFormat Format :=wdTableFormatClassic1

    End With

    myDoc. SaveAs FileName :="C:/Temp.doc"

    End With

    If theError = 429 Then appWD. Quit

    Set appWD = Nothing

    从Word对另一个应用程序进行自动化

    要通过从Word使用自动化来和另一个应用程序交换数据,必须首先在“引用”对话框(在“工具”菜单中)里设置对另一个应用程序的类类型库的一个引用。在这之后,另一个应用程序的对象、属性和方法都将出现在“对象浏览器”中,并且会在编译时自动对语法进行检查。用户也可以获得这些对象、属性和方法的内容敏感型帮助。

    下一步,声明一个引用另一个应用程序中的特定类型对象的对象变量。以下示例声明了一个变量,该变量指向Microsoft Excel Application对象。

    Dim xlObj As Excel.Application.8

    用户可以通过使用CreateObject 或 GetObject函数来获得Automation对象。然后,通过使用另一个应用程序的对象、属性和方法,用户可以添加、更改或删除信息。当用户完成更改后,关闭应用程序。以下Word的示例判断Microsoft Excel是否正在运行。如果指定的Microsoft Excel任务存在,该示例使用GetObject函数;否则,它使用CreateObject函数。然后该示例将选定的文字传送给活动的Microsoft Excel工作簿里“工作表1”的A1单元格中。在任务完成以后,使用带有Nothing关键字的Set语句来清除Automation对象变量。

    Dim xlObj As Excel. Application. 8

    If Tasks.Exists ("Microsoft Excel") = True Then

    Set xlObj = GetObject (, "Excel. Application. 8")

    Else

    Set xlObj = CreateObject ("Excel. Application. 8")

    End If

    xlObj. Visible = True

    If xlobj. Workbooks. Count = 0 Then xlobj. Workbooks. Add

    xlObj. Worksheets ("Sheet1").Range("A1").Value = Selection. Text

    Set xlObj = Nothing

    以下Word的示例判断PowerPoint是否正在运行。如果存在PowerPoint任务,那么该示例使用GetObject函数;否则,它使用CreateObject函数。然后该示例创建一个新演示文稿,文稿的第一个文本框包含活动Word文档的名称,第二个文本框包含活动文档第一段的文字。在任务完成后,使用带有Nothing关键字的Set语句来清除Automation对象变量。

    Dim pptObj As PowerPoint. Application.8

    If Tasks. Exists ("Microsoft PowerPoint") = True Then

    Set pptObj = GetObject (, "PowerPoint. Application.8")

    Else

    Set pptObj = CreateObject ("PowerPoint. Application.8")

    End If

    pptObj. Visible = True

    Set pptPres = pptObj. presentations. Add

    Set aSlide = pptPres. Slides. Add(Index :=1, Layout :=ppLayoutText)

    aSlide. Shapes(1). TextFrame. TextRange. Text = ActiveDocument.Name

    aSlide. Shapes(2). TextFrame. TextRange. Text = ActiveDocument.Paragraphs(1). Range. Text

    Set pptObj = Nothing

    要了解关于对Microsoft Access进行自动化的信息,请参阅第三章“Microsoft Access对象”。要了解关于Word中Data Access 对象(DAO)的使用,请参阅“帮助”中的“在Microsoft Word中使用DAO”。

    同内嵌Word对象进行通信

    以后可以使用任何Word对象的Application属性来返回Word Application 对象。这有助于从内嵌在另一个应用程序中的Word文档里方法Word Application对象。以下的在Microsoft Excel中运行的示例,将一个对象变量设置为Word Application对象。(为了使该示例能够运行,在活动工作表中的形状一必须是一个内嵌Word文档。)该示例中最后一条命令在内嵌Word文档的开头添加文字。

    Dim appWRD As Word. Application

    Set embeddedDoc = ActiveSheet. Shapes(1)

    Set appWRD = embeddedDoc. OLEFormat. Object. Object. Application

    appWRD. ActiveDocument. Range(Start :=0, End :=0). InsertBefore Text :="New text "

    以下在PowerPoint中运行的示例,将一个对象变量设置为Word Application对象。(为了使该示例能够运行,在演示文稿中的幻灯片一必须是一个内嵌Word文档。)该示例的最后一条命令显示了在内嵌Word文档中的文字。

    Dim appWRD As Word. Application

    Set embeddedDoc = Presentations(1). Slides(1). Shapes(1)

    embeddedDoc. OLEFormat. Activate

    Set appWRD = embeddedDoc.OLEFormat. Object. Application

    MsgBox appWRD. ActiveDocument. Content.Text
     

     

    更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn

     

     

    展开全文
  •  C#中添加Word的支持,添加对Microsoft.Office.Interop.Word的命名空间,如下图所示,右键点击“引用”,在弹出的“添加引用”对话框中选中COM标签,找到“Microsoft Word 12.0 Object Library”。...

    一、开发环境布置

             C#中添加对Word的支持,只需添加对Microsoft.Office.Interop.Word的命名空间,如下图所示,右键点击“引用”,在弹出的“添加引用”对话框中选中COM标签页,找到“Microsoft Word 12.0 Object Library”。

     

            点击确定按钮后,可在引用中添加显示名称为Microsoft.Office.Interop.Word的引用:


    二、Word的对象模型介绍


            Word中共有5种常用的对象模型:应用程序对象Application、文档对象Document、Selection对象、Range对象和Bookmark对象。
    下图显示了 Word 对象模型层次结构中这些对象的一个视图。


            初看起来,对象似乎重叠在一起。 例如,Document 和 Selection 对象都是 Application 对象的成员,但 Document 对象也是 Selection 对象的成员。 Document 和 Selection 对象都包含 Bookmark 和 Range 对象。 因为有多种方法可以访问相同类型的对象,所以存在重叠。 例如,你将格式设置应用于 Range 对象;但你可能想要访问当前选定内容、某一特定段落,某一节或整个文档的范围。
    下面分别介绍五种模型对象的含义和作用。

    2.1 Applicatin对象。


            Application 对象表示 Word 应用程序,并且是所有其他对象的父级。 其成员通常作为一个整体应用于 Word。 你可以使用其属性和方法来控制 Word 环境。
    在文档级项目中,可以通过使用 ThisDocument 类的 Application 属性来访问 Application 对象。

    2.2 Document对象


            Microsoft.Office.Interop.Word.Document 对象是 Word 编程的中心。 它表示一个文档及其所有内容。 当你打开文档或创建新文档时,将创建新的 Microsoft.Office.Interop.Word.Document 对象,并将其添加到 Application 对象的 T:Microsoft.Office.Interop.Word.Documents 集合。 具有焦点的文档被称为活动文档。 它由 Application 对象的 P:Microsoft.Office.Interop.Word._Application.ActiveDocument 属性表示。

    2.3 Selection对象


            Selection 对象表示当前所选的区域。 在 Word 用户界面中执行操作(如文本加粗)时,可以选择或突出显示文本,然后应用格式设置。 文档中始终存在 Selection 对象。 如果未选中任何内容,则它表示插入点。 此外,选定内容可包含多个不相邻的文本块。

    2.4 Range对象


            Range 对象表示文档中的相邻区域,并由起始字符位置和结束字符位置进行定义。 并不仅限于单个 Range 对象。 你可以在同一文档中定义多个 Range 对象。 Range 对象具有以下特性:
    · 它可以只包含单独的插入点,也可包含一个文本范围或整个文档。
    · 它包括非打印字符,如空格、制表符和段落标记。
    · 它可以是当前选定内容所表示的区域,也可以表示不同于此内容的区域。
    · 它在文档中不可见,这与选定内容不同,后者总是可见。
    · 它不随文档一起保存,且仅在代码运行时才存在。
     · 当在某个范围的末尾插入文本时,Word 会自动扩展该范围以包括插入的文本。

    2.5 Bookmark对象


            Microsoft.Office.Interop.Word.Bookmark 对象表示文档中的相邻区域,同时具有起始位置和结束位置。 你可以使用书签标记文档中的某个位置,也可将其作为文档中文本的容器。 Microsoft.Office.Interop.Word.Bookmark 对象可以包含插入点,也可以与整个文档一样大。Microsoft.Office.Interop.Word.Bookmark 具有下列特征,以将其与 Range 对象区别开来:
    · 你可以在设计时命名书签。
    · Microsoft.Office.Interop.Word.Bookmark 对象随文档一起保存,因此在代码停止运行或文档关闭时不会被删除。
    · 通过将 T:Microsoft.Office.Interop.Word.View 对象的 P:Microsoft.Office.Interop.Word.View.ShowBookmarks 属性设置为 false 或 true,可以隐藏或显示书签。

            以上部分内容摘自MSDN,主要介绍了Word中主要的五种对象模型,下节开始介绍C#中操作Word的方法。

    展开全文
  • java使用jacob操作word添加图片

    千次阅读 2018-07-08 15:30:44
    这是给word添加水印,当业务需求在多页word文档中,某一页添加水印一样的盖章,这个链接就没有办法了。 2、在word中需要盖章的位置添加个书签。 3、用jacob给书签替换成图片 /** * Created by qiuzhb on 2018...
  • Java向word中插入Excel文件对象

    千次阅读 2019-01-08 15:12:38
    但是有时我们想要将Excel中表格的大量数据直接插入到word文档中,这就需要用到word的插入对象的功能,也就是直接将Excel文件当做对象插入到word中。 本地的word插入Excel操作很简单,就是直接插入—对象—选择相应...
  • C#中添加Word的支持,添加对Microsoft.Office.Interop.Word的命名空间,如下图所示,右键点击“引用”,在弹出的“添加引用”对话框中选中COM标签,找到“Microsoft Word 12.0 Object Library”。...
  • Word文档默认设置每一页的页眉页脚内容都相同。然而在报告、书籍等排版中往往需要不同的页眉页脚来美化排版。本篇文章将分享如何使用C#和免费Word组件来实现该功能。
  • C#操作Word (1)Word对象模型

    万次阅读 多人点赞 2012-03-29 14:09:35
    Word对象模型 (.Net Perspective) 本文主要针对在Visual Studio中使用C# 开发关于Word的应用程序 来源:Understandingthe Word Object Model from a .NET Developer's Perspective 五大对象 Application :...
  • poi给Word添加“下一页”

    千次阅读 2019-10-24 21:07:22
    Word操作中,如果想插入不同的页眉,就必须要将【链接到前条页眉】取消勾选,而只有插入个“下一页”分隔符时才能做到这个效果。 所以我们要做的就是插入“下一页”分隔符(不是别的分隔符),然后再插入页眉...
  • WORD】小论文如何正确添加注脚前言需求错误操作正确操作选择脚注对象修改兼容性清除脚注的标号 前言 今年的小论文要求在首页的底部增加段“江苏高校****基金”的说明,搜了半天终于明白怎么弄了。记一下防止后面...
  • java使用jacob给word添加水印

    千次阅读 2018-07-08 15:15:07
    1、操作word需要的jacobjar包和dll文件。2、jar包放到项目中WEB-INF\lib中,或者mvn install:install-file -Dfile=D:\Users\qiuzhb\Downloads\jacob-1.18-M2\jacob.jar -DgroupId=...
  • C#复制Word内容到另Word

    千次阅读 2018-02-12 11:00:14
    本篇文章介绍的复制Word内容到另Word的操作分为两种情况,种是复制部分原Word文档内容到另Word文档,包括格式、图片、超链接等;另种是复制文档全部内容(除页眉页脚外)到另Word。下面将详细阐述。...
  •  我们创建个名叫WordTest的Windows窗体应用程序作为本次试验的工程,为了能够显示word中的内容,我们先要在下图所示的Program.cs的main()函数中引入控制台Console来显示读取到内容。   Program.cs的代码: n
  • word插入图片显示不全

    千次阅读 2015-09-15 14:15:49
    word中,如果粘贴或者插入的图片时,往往会遇到图片不能正常显示,只显示最下面的部分,这是什么原因呢,其实问题的原因是段落间距的设置问题。知道了原因解决的方案就有了,种很简单的就是用快捷键的方式,...
  • Java 实现 word文件添加 图片水印 用到的jar文件会在我博客另外文件中紧跟,需要的可以下载 需要说明的,需要根据自己运行的操作系统将 jacob-1.15-M4-放在jdk的C:\Program Files\Java\jdk1.8.0_45\jre\bin 目录下方...
  • word添加Mathtype公式行间距改变问题

    万次阅读 多人点赞 2018-06-13 15:12:16
    关闭公式编辑窗口,退回到Word窗口,然后在Mathtype菜单中点“Format Equations”,再选择你定义的那个文件,勾选“Whole Document”,确定。然后就可以看到状态栏上公式处理进度飞闪,到两分钟左右(视文章...
  • web中,如何读取客户端Word内容并且显示在页面中? 我发现有2种方法,种是直接在客户端操作,种是把客户端的word上传到服务器端操作,这2种各有优缺点。 我现就举出客户端操作的例子 首先在.aspx中添加如下js...
  • word2003和word2007如何添加和删除脚注

    万次阅读 2012-05-01 23:57:44
    word2003: 、更改脚注的数字格式  步骤如下:  1.将插入点置于需要更改脚注格式的节中,如果没有分节,可将插入点置于文档中的任意位置。  2.执行“插入”→“引用”→“脚注”,打开“脚注和尾注...
  • 向Docx4j生成的word文档添加图片和布局--第部分

    万次阅读 热门讨论 2013-03-28 22:52:09
    原文标题:Adding images and layout to your Docx4j-generated word documents, part 1 原文链接:http://blog.iprofs.nl/2012/10/22/adding-images-and-layout-to-your-docx4j-generated-word-documents-part-1/ ...
  • 前段时间我被分配到个关于poi操作的word的需求 ,大概的需求:前台页面上传的word的模板 我这个需求每次上传的word的模板格式不确定 ,再根据这个模板去解析word的占位符,是无法实现.所以之前打算用freemaker去...
  • Vue导出页面为word

    千次阅读 2019-05-11 10:27:14
    由于导出word时,页面样式无法正常使用,因此整体页面采用table布局,尽在几个地方添加style样式,没有其余样式 /** * 当页面中有canvas时,我的做法是 * 在页面中预先放置个src为空的img标签 * 点击...
  • 我的word中的图片只显示一个方框,这个问题困扰我有段时间了,今天终于搞定。 原因如下: Word中不能显示公式 问:在Word 2003中编辑好的公式无法显示,只显示个方框,该怎么办? 答:Word把使用公式编辑...
  • POI操作word填充数据,合并多个word个,遇到一些问题的解决 最近搞个向word模板中替换占位符 填充数据,然后将多个word合并在一起的方法。网上搜有很多资料,现在在这儿对过程中遇到的一些问题进行描述。 ...
  • 套习题 1 . 题干 请在【答题】菜单下选择【进入考生文件夹】命令,并按照题目要求完成下面的操作。 ​ 在考生文件夹下打开文档 ( Word素材.docx ) ,按照要求完成下列操作并以该文件名( Word.docx )保存文档。...
  • 在项目需求中,需要对于word模板文档生成相对应的word文件,而此word模板是多的并且需要在最终文件中生成相应的目录,由于项目环境是Linux,所以舍弃了jacob(windows环境)。然后主要是研究了Apache poi 进行...
  • // 获取word中的第个表格,index指定表格位置 Table table = (Table) doc.getChild(NodeType.TABLE, 0, true); DocumentBuilder builder = new DocumentBuilder(doc); String patch = "D:/aa.jpg"; String ...
  • 读取Excel 数据并写入到Word示例

    千次阅读 2019-10-14 19:44:05
    个读取Excel 数据并写入到Word 的项目
  • 分享个在线Word编辑的jQuery插件

    千次阅读 2018-07-21 12:05:51
    分享个在线Word编辑的jQuery插件 在做OA或者工作流程的网站中,常常能够看到一些 在线 Word编辑进行文档处理的功能,这里我开发了个在线Word编辑插件并且以此为例。   1. NTKO Word在线编辑器介绍: ...
  • 首先在pom文件中引入用于生成二维码和word的jar包 <!--二维码生成--> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</art...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,832
精华内容 20,732
关键字:

word添加对象只显示一页