Interop.Word, замена ключевых слов в документе - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. VisualStudio 2008, Office 2007, никак не могу реализовать замену ключевых слов в документе word используя данные из textBox'ов. Добавляю ссылку на Interop.Word версии 12.0.0.0, но при построении выводит ошибку ссылаясь на строку "range.Find.Execute(FindText: StubToReplace, ReplaceWith: text);". Открыл проект в vs2012 все работает. Подскажите как решить проблему в vs 2008?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;
 
namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        private readonly string TemplateFileName = @"C:\for_print.docx";
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            var family = textBox1.Text;
            var name = textBox2.Text;
            var wordApp = new Word.Application();
            wordApp.Visible = false;
            try
            {
                var wordDocument = wordApp.Documents.Open(TemplateFileName);
                ReplaceWordStub("family", family, wordDocument);
                ReplaceWordStub("name", name, wordDocument);
                wordDocument.SaveAs(@"C:\save.docx");
                wordApp.Visible = true;
            }
            catch
            {
                MessageBox.Show("Ошибка", "Ошибка", MessageBoxButtons.OK);
            }
        }
        private void ReplaceWordStub(string StubToReplace, string text, Word.Document wordDocument)
        {
            var range = wordDocument.Content;
            range.Find.ClearFormatting();
            range.Find.Execute(FindText: StubToReplace, ReplaceWith: text); //Ошибка
        }
    }
}

Решение задачи: «Interop.Word, замена ключевых слов в документе»

textual
Листинг программы
internal static void Replace(String oldText, String newText, Word.Find find)
        {
            try
            {
                //Присваиваем в поиск старый и новый текст
                find.Text = oldText;
                find.Replacement.Text = newText;
 
                //Инициализируем служебные объекты
                Object wrap = Word.WdFindWrap.wdFindContinue;
                Object replace = Word.WdReplace.wdReplaceAll;
 
                //Выполняем поиск с заменой всех вхождений старого текста на новый
                find.Execute(ref miss, ref falseObj, ref falseObj, ref falseObj,
                        ref falseObj, ref falseObj, ref trueObj, ref wrap, ref falseObj, ref miss,
                        ref replace, ref falseObj, ref falseObj, ref falseObj, ref falseObj);
            }
            catch (Exception ex)
            {
                throw new Exception("Помилка під час вставки тексту!", ex);
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы