WordBasic 和 Visual Basic 在概念上的区别

   

Visual Basic for Applications 和 WordBasic 之间主要的区别是,WordBasic 语言包含大约 900 个同级命令列表,而 Visual Basic 则包含处于分级结构中的多种对象,每种对象都具有一组特定方法和属性(类似于 WordBasic 中的语句和函数)。大多数 WordBasic 命令在任何时候都可运行,而在 Visual Basic 中,只能使用在给定时刻有效的对象的方法和属性。

对象是 Visual Basic 的基本元素;几乎在 Visual Basic 中进行的所有操作都与修改对象有关。Word 中的所有元素(文档、段落、域和书签等)都可用 Visual Basic 中的对象表示。与同级列表中的命令不同,部分对象只能通过其他对象进行访问。例如,只能从 StyleSelectionFind 等其他对象访问 Font 对象。

以下两段程序中应用加粗格式的编程任务表明两种编程语言之间的区别。下面的 WordBasic 指令对所选内容应用加粗格式。

Bold 1

下列示例是等效的 Visual Basic 语句,同样对所选内容应用加粗格式。

Selection.Font.Bold = True

Visual Basic 不包含 Bold 语句和函数。但具有名为 Bold 的属性(属性通常为对象的某种特性,例如大小、颜色或是否加粗等)。BoldFont 对象的属性。类似地,FontSelection 对象的属性,该属性返回一个 Font 对象。依照对象的等级结构,可以生成将加粗格式应用于所选内容的指令。

Bold 属性是一个 Boolean 类型的可读写属性。这意味着可将 Bold 属性设为 TrueFalse(开或关),也可返回其当前值。下列 WordBasic 指令的返回值表明是否对所选内容应用了加粗格式。

x = Bold()

下列示例为等效的 Visual Basic 语句,同样返回所选内容的加粗格式的状态。

x = Selection.Font.Bold

使用 Visual Basic 的思路

若要在 Visual Basic 中执行一项任务,需要确定合适的对象。例如,如果希望应用“字体”对话框中的字符格式,可使用 Font 对象。然后需要逐级深入 Word 对象分级结构,确定从 Application 对象开始,到达要修改的 Font 对象所需要通过的对象,这些对象包含要修改的 Font 对象。确定该对象的路径后(例如,Selection.Font),可使用“Visual Basic 编辑器”中的“对象浏览器”、“帮助”或“自动列表成员”等功能确定可应用于该方法的属性和方法。有关使用属性和方法深入查找对象的详细信息,请参阅理解对象、属性和方法

属性和方法通常对 Word 对象分级结构中的多种对象有效。例如,下列示例将加粗格式应用于整篇文档。

ActiveDocument.Content.Bold = True

另外,对象本身通常存在于对象分级结构中的多个位置。有关 Word 对象模型的图解说明,请参阅 Microsoft Word 对象

若要了解在 Word 2002 中完成所需任务的 WordBasic 命令,请参阅 Visual Basic 和 WordBasic 命令对照表

Selection 和 Range 对象

大部分 WordBasic 命令可修改所选内容。例如,Bold 命令可将所选内容设为加粗格式。InsertField 命令可在插入点插入域。任意时刻要在 Visual Basic 中处理所选内容时,可使用 Selection 属性返回 Selection 对象。所选内容可以是一块文字区域或仅为插入点。

下列 Visual Basic 示例将在所选内容之后插入文字和一个新段落。

Selection.InsertAfter Text:="Hello World"
Selection.InsertParagraphAfter

除了处理所选内容,还可以定义并处理文档中不同区域的文本。Range 对象用开始字符位置和结束字符位置引用文档中标识的连续区域。类似于在文档中使用书签的方式,在 Visual Basic 中用 Range 对象标识文档中的某一部分。但不同于书签的是,用户看不到 Range 对象,除非使用 Select 方法选定了该 Range 对象。例如,可用 Visual Basic 在文档中的任何位置应用加粗格式,而不必更改所选内容。下列示例对活动文档的前 10 个字符应用加粗格式。

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

下列示例对第一个段落应用加粗格式。

ActiveDocument.Paragraphs(1).Range.Bold = True

这两个示例都更改了活动文档中的格式,且没有更改所选内容。有关 Range 对象的详细信息,请参阅处理 Range 对象