6

私は VB 6 でこれを 100 回実行しましたが、C# 2008 と Word 2007 を使用すると気が狂いそうになります。

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

これを試して:

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 に答える
0

最初の推測: WordDocument.Variables("replace1")WordDocument.Variables["replace1"].

MSDN で見つけた後に更新します。明らかに、インデクサーは ref パラメーターです — MSDNを参照してください。したがって、次のような変数を使用する必要があります。

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

変。おそらく、そのような API 設計には理由があります。

また、インデクサーはセッターを定義しないため、代入は機能しません。Variableゲッターによって返されたインスタンスの内部を操作する必要があります。

于 2010-09-05T17:36:49.817 に答える