Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2012, 17:09   #1
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию Поиск и замена текста в файлах WORD

Здавтсвуйте. Есть такой код:
Код:
oWord.Selection.Find.Text = @"#Date#";
oWord.Selection.Find.Replacement.ClearFormatting();
oWord.Selection.Find.Replacement.Text = @DateTime.Now.Date.ToString();
oWord.Selection.Find.Execute(Word.WdReplace.wdReplaceAll);
Но почему то замена текста не происходит, просто выделяется искомый текст. Может кто сталкивался?
Заранее Благодарен за ответ.

P.S. В Delphi такой подход пролетает на УРА!
FaTaL вне форума Ответить с цитированием
Старый 03.12.2012, 10:48   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Похоже этот форум яростно используют программисты Delphi, а с C# дела обстоят худовато. Может хоть какой нибудь форум посоветуете?
FaTaL вне форума Ответить с цитированием
Старый 03.12.2012, 16:51   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Может кому интересно, добился я того, чего и хотел. Вот код:
Код:
using Word = Microsoft.Office.Interop.Word;
*****
public Word._Application oWord;
*****
        public void SearchAndReplace (string FindStr, string RepStr)
        {
            oWord.Selection.Find.ClearFormatting();
            oWord.Selection.Find.Replacement.Text = @RepStr;
            oWord.Selection.Find.Execute(@FindStr, Replace: Word.WdReplace.wdReplaceAll);
        }
И собственно сам вызов:
Код:
            oWord = new Word.Application();
            oWord.Documents.Open(@Application.StartupPath + @"\Template.rtf");
            SearchAndReplace(@"#Date#", @DateTime.Now.Date.ToLongDateString());
            oWord.Visible = true;
FaTaL вне форума Ответить с цитированием
Старый 07.12.2012, 15:11   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Снова проблемка. Указанный выше код работает только на машине, на которой писалась прога (Office2010, Windows 7 x86).
А вот на другой машине (Office 2007 Windows 7 x86) выдет вот такую ошибку:

************** Текст исключения **************
System.AccessViolationException: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
в Microsoft.Office.Interop.Word.Find. get_Replacement()
в Credit_Verdict.MainForm.SearchAndRe place(String FindStr, String RepStr)
в Credit_Verdict.MainForm.btnGenerate _Click(Object sender, EventArgs e)
в System.Windows.Forms.ToolStripItem. RaiseEvent(Object key, EventArgs e)
в System.Windows.Forms.ToolStripButto n.OnClick(EventArgs e)
в System.Windows.Forms.ToolStripItem. HandleClick(EventArgs e)
в System.Windows.Forms.ToolStripItem. HandleMouseUp(MouseEventArgs e)
в System.Windows.Forms.ToolStripItem. FireEventInteractive(EventArgs e, ToolStripItemEventType met)
в System.Windows.Forms.ToolStripItem. FireEvent(EventArgs e, ToolStripItemEventType met)
в System.Windows.Forms.ToolStrip.OnMo useUp(MouseEventArgs mea)
в System.Windows.Forms.Control.WmMous eUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndPro c(Message& m)
в System.Windows.Forms.ScrollableCont rol.WndProc(Message& m)
в System.Windows.Forms.ToolStrip.WndP roc(Message& m)
в System.Windows.Forms.Control.Contro lNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.Contro lNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.C allback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Загруженные сборки **************
mscorlib
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5456 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Credit_Verdict
Версия сборки: 2.0.0.0
Версия Win32: 2.0.0.0
CodeBase: file:///C:/Credit_Verdict/Credit_Verdict.exe
----------------------------------------
System.Windows.Forms
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5460 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5456 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5462 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Microsoft.Office.Interop.Word
Версия сборки: 14.0.0.0
Версия Win32: 14.0.4762.1000
CodeBase: file:///C:/Credit_Verdict/Microsoft.Office.Interop.Word.DLL
----------------------------------------
mscorlib.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5456 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
System.Windows.Forms.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

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

Как решить проблему?
Файл Microsoft.Office.Interop.Word.dll переношу вместе с программой. Без него сразу же ругается.
FaTaL вне форума Ответить с цитированием
Старый 12.12.2012, 19:32   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Вообщем я решил проблему. Это ошибка самого мелкософта. Вот статья про этот БАГ и как его обойти http://support.microsoft.com/kb/313104/ru
FaTaL вне форума Ответить с цитированием
Старый 22.01.2019, 13:06   #6
Yuska83
Новичок
Джуниор
 
Регистрация: 22.01.2019
Сообщений: 2
По умолчанию Ссылка уже не работает

Цитата:
Сообщение от FaTaL Посмотреть сообщение
Вообщем я решил проблему. Это ошибка самого мелкософта. Вот статья про этот БАГ и как его обойти http://support.microsoft.com/kb/313104/ru
Так расскажите как обойти? Очень надо!
Yuska83 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск текста в файлах папки и запись результатов Composter Microsoft Office Word 12 02.04.2012 08:21
Поиск и замена текста в надписях Word shakycucumber Общие вопросы Delphi 2 19.04.2011 02:18
Поиск текста в файлах Arassir Общие вопросы по программированию, компьютерный форум 5 08.04.2011 09:22
Поиск и замена в текстовых файлах akm-gala Помощь студентам 1 18.06.2010 09:08