6

我已经在 VB 6 中这样做了一百次,但使用 C# 2008 和 Word 2007 让我发疯了。我创建了一个包含两个 docvariables 的 docx 文件:

Some text here....

{docvariable replace1}
{docvariable replace2}

More text here......

我首先创建了一个宏来执行它并且它可以工作:

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

这是我的 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;

这是我得到的错误:

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

4

4 回答 4

2

如果您有兴趣,可以通过 VS 2010 & Word 2010 执行此操作的方法如下:

Application app = new Application();
Document doc = word.Documents.Add(filepath);
doc.Variables["var_name"].Value = your_value_here;
doc.Fields.Update();
doc.Save();
doc.Close();
app.Quit();
于 2011-11-16T18:19:49.117 回答
1

我认为您在代码中错过了“.value”...

WordDocument.Variables("replace1") = "This is a test";

应该写成:

WordDocument.Variables("replace1").Value = "This is a test";
于 2015-05-19T21:24:19.100 回答
0

第一个猜测:WordDocument.Variables("replace1")WordDocument.Variables["replace1"]

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

string replace = "replace1";
WordDocument.Variables[ref replace] = ...;

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

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

于 2010-09-05T17:36:49.817 回答
0

尝试这个:

object variable1 = "This is a test";
object variable2 = "it's only a test!";
Variable var1 = WordDocument.Variables.Add("replace1", ref variable1);
Variable var2 = WordDocument.Variables.Add("replace2", ref variable1);
WordDocument.Fields.Update();
于 2010-11-01T12:36:56.327 回答