日期:2012-03-08  浏览次数:20384 次

示例 3:打开现有的 Word 文档


Documents.SaveAs 方法一样,Documents.Open 方法签名在 Office 2000 和 OfficeXP 之间也存在差别,因此新名称包装在 #if 声明中。Open 方法和 SaveAs 方法一样简单,如下所示:
    object fileName = Environment.CurrentDirectory+"\\example3";    object optional=Missing.Value;#if OFFICEXP    _Document doc = app.Documents.Open2000( ref fileName,#else    _Document doc = app.Documents.Open( ref fileName,#endif                         ref optional,                         ref optional,                         ref optional,                         ref optional,                         ref optional,                         ref optional,                         ref optional,                         ref optional,                         ref optional,                         ref optional,                         ref optional);

帮助中的 Word 2002 Visual Basic 参考以及 MSDN(英文)中有关 Documents.Open 方法的说明记录了这些可选参数。
本示例中比较让人感兴趣的代码是,打开的文档中的文本先被突出显示,然后被剪切:
    object first=0;    object last=doc.Characters.Count;    Range r = doc.Range(ref first, ref last);    r.Select();    Thread.Sleep (2000);    r.Cut();

第一个字符和最后一个字符位置的整数值被封装到第一个和最后一个对象,然后传递给 Document.Range() 函数,该函数返回 Select() 函数调用的 Range 对象。这种显式封装是必需的,因为 Range 对象期待引用其参数,并且任何隐式或显式的转换都会将参数改为右值,而右值是不能按引用传递的。本示例使文本突出显示持续两秒钟,而后对文本进行剪切。剪切操作也可以通过以下代码实现:
    object first=0;    object units = WdUnits.wdCharacter;    object last=doc.Characters.Count;    doc.Range(ref first, ref last).Delete(ref units, ref last);

如何生成和运行 example3.cs


要生成 example3.cs,可以在 Visual Studio .NET Command Prompt(Visual Studio .NET 命令提示)窗口中执行以下操作:
  1. 打开保存 example3.cs 源文件的目录(例如 C:\CSOfficeSamples),并在命令提示后键入 csc /r:"C:\Office XP PIAs\Microsoft.Office.Interop.Word.dll" /d:OFFICEXP example3.cs
    (如果 Office XP PIA 保存在其他位置,则需要使用相应值替换下面的“驱动器”和“安装路径”:csc /r:驱动器:\<安装路径>\Microsoft.Office.Interop.Word.dll /d:OFFICEXP example3.cs。)
  2. 要运行 example3.exe(与 example3.cs 源文件位于同一文件夹中),双击该程序即可。

示例 4:使用 Word 公开的事件


本示例涉及的内容要比其他几个多一些,但实际上并不复杂。看起来复杂的主要原因在于标识事件及其处理程序类型的名称长一些。看一看 Office XP 版本的 DocumentOpenDocumentChange 事件处理程序的设置代码:
...#if OFFICEXP    ApplicationEvents3_DocumentOpenEventHandler myOpenDoc = new  &n