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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д