使用C#填写Word docx中的docvariable

Nor*_*orm 6 c# variables ms-word docvariable

我已经在VB 6中完成了这一百次,但是这让我疯狂地使用C#2008和Word 2007.我创建了一个包含两个docvariables的docx文件:

Some text here....

{docvariable replace1}
{docvariable replace2}

More text here......
Run Code Online (Sandbox Code Playgroud)

我首先创建了一个宏来做它并且它有效:

Sub FillDocVariable()
'
' FillDocVariable Macro
'
'

  ActiveDocument.Variables("replace1").Value = "This is a test"
  ActiveDocument.Variables("replace2").Value = "it is only a test."
  ActiveDocument.Fields.Update

End Sub
Run Code Online (Sandbox Code Playgroud)

这是我的C#代码(请注意,我正在学习这个代码):

using Microsoft.Office.Interop.Word;
 object paramMissing = Type.Missing;
       object openfileName = @"C:\testing\Documents\1.docx";

      ApplicationClass WordApplication = new ApplicationClass();
      Document WordDocument = WordApplication.Documents.Open(ref openfileName, 
        ref paramMissing, ref paramMissing, ref paramMissing,
        ref paramMissing, ref paramMissing, ref paramMissing,
        ref paramMissing, ref paramMissing, ref paramMissing,
        ref paramMissing, ref paramMissing, ref paramMissing,
        ref paramMissing, ref paramMissing, ref paramMissing);

      WordDocument.Variables("replace1") = "This is a test";
      WordDocument.Variables("replace2").Value = "it's only a test!";
      WordDocument.Fields.Update;
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

错误1不可调用的成员'Microsoft.Office.Interop.Word._Document.Variables'不能像方法一样使用.大段引用

Ond*_*cny 0

第一个猜测:WordDocument.Variables("replace1")\xe2\x86\x92 WordDocument.Variables["replace1"]

\n\n

在MSDN中找到后更新:显然,索引器是一个ref参数 \xe2\x80\x94 参见MSDN。所以,你必须使用这样的变量:

\n\n
string replace = "replace1";\nWordDocument.Variables[ref replace] = ...;\n
Run Code Online (Sandbox Code Playgroud)\n\n

奇怪的。也许这样的 API 设计是有原因的。

\n\n

另外,由于索引器没有定义 setter,因此分配将不起作用。您必须操纵Variablegetter 返回的实例的内部结构。

\n