zz给 VSTO 插件、文档传送参数

这个问题在中文、英文 MSDN 的 Office 开发论坛上都看到过(也正好都是我提供了答案),看来也算是一个“国际化需求”了。今天就记录一下和大家分享。

  故事是这样的:开发人员有一个 WinForm 应用程序,它从数据库里面读取出一条记录后,获得了一个记录 ID,然后需要打开 Word 或者 Excel,用已经准备好了的 VSTO 文档或者是插件,根据这个记录 ID 生成相应的 Office 文档内容。问题是,怎么把这个 ID 传给 Word 或者 Excel?

  有一个很简单的实现方法——直接在启动 Word / Excel 的命令行里面加参数!比如:

  <Excel.exe> /r "D:\ExcelWorkbook1.xlsx" /e /id:1234

  其中 <Excel.exe> 应该是 Excel.exe 的完整路径。 

  /r 后面跟 VSTO Excel 文档的完整路径。

  /e 告诉 Excel 不要打开一个空白新文档。

  /id:1234 就是自己定义的参数了,你可以在这里把你的ID号传入。当然参数名字也可以是其它的,并不是一定要“id”。

   第二步,在 VSTO Excel 文档里面,可以通过下面的代码枚举命令行参数:

  For Each a As String In Environment.GetCommandLineArgs
       MsgBox(a)
  Next

  上面的代码如果被执行,会把所有命令行参数都显示出来。 

  只要找到其中/id:开头的参数,把数字取出来就好了。

  对于 Word,也可以用类似的方法,只是 /r /e 之类的参数要换成对应的 Word 参数。

  这个方法用在 Word 2007 / Excel 2007 没有问题,但是我不能保证将来的版本是否也可以这样用。特别是如果你添加的自定义参数不巧被新版本用作标准参数名的话……所以参数名最好独特一点啦。

你可能感兴趣的:(插件)