Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 邮件合并到多个文本框Word_C#_Ms Word_Textbox_Office Interop_Mailmerge - Fatal编程技术网

C# 邮件合并到多个文本框Word

C# 邮件合并到多个文本框Word,c#,ms-word,textbox,office-interop,mailmerge,C#,Ms Word,Textbox,Office Interop,Mailmerge,我有一个模板Word文档,它在形状的顶部包含多个文本框(使其具有比文本框轮廓更好的边框轮廓)。这些文本框包含我希望合并到的邮件合并字段。我有下面的代码试图做到这一点 foreach (Microsoft.Office.Interop.Word.Range range in document.StoryRanges) { foreach (Microsoft.Office.Interop.Word.Field field in range.Fields)

我有一个模板Word文档,它在形状的顶部包含多个文本框(使其具有比文本框轮廓更好的边框轮廓)。这些文本框包含我希望合并到的邮件合并字段。我有下面的代码试图做到这一点

foreach (Microsoft.Office.Interop.Word.Range range in document.StoryRanges)
        {
            foreach (Microsoft.Office.Interop.Word.Field field in range.Fields)
            {
                if (field.Code.Text.Contains("Test Field"))
                {
                    field.Select();
                    application.Selection.TypeText("test");
            }
        }
问题是,这只会更改第一个文本框中的字段,我在此处和中都搜索了解决方案,但实际上我仍然难以找到解决方案。我还添加了以下几行,试图找出一些问题

Console.WriteLine(document.StoryRanges.Count);
在foreach循环中,我也有

Console.WriteLine(range.Fields.Count);

对WriteLine的第一次调用表明有两个故事范围,一个是主文档,另一个是所有文本框所在的范围。但是,第二个WriteLine表示第一个范围有0个字段,而第二个范围只有1个字段,即使我使用的模板文档包含10多个字段。

故事范围是否嵌套?它们是不同类型的吗

如果是的话,你应该考虑使用SturyRange.NExtSturyRead在这里提出:

'Iterate through all story types in the current document 
    For Each  rngStory In ActiveDocument.StoryRanges 

      'Iterate through all linked stories 

      Do 

      With   rngStory.Find 

        .Text =   "find text" 

          .Replacement.Text =  "I'm found" 

          .Wrap = wdFindContinue 

        .Execute Replace:=wdReplaceAll  

        End With 

        'Get next linked story (if any) 

        Set  rngStory = rngStory.NextStoryRange 

      Loop Until  rngStory  Is Nothing 

  Next