Я прочитал много сообщений об этой ужасной и раздражающей ошибке: «Исключение нарушения прав доступа не было обработано». Но только один пост на Word2007 и вызывающая команда "Выделение.Найти.Выполнить". Предлагаемое решение состояло в том, чтобы переустановить Word2007, и это немного тривиально!
Я пытаюсь объяснить свое окружение.
У меня есть небольшое приложение, написанное на C# с использованием WinForms и вызовом Word через InteropServices (word.dll) для создания нового документа в Word (поднятие экземпляра Word2007). Весь код работает на .NET Framework 3.5. Внутри кода C# я создаю документ, а затем ищу в нем что-то, что можно заменить.
Программа только на некоторых машинах выдает указанную ошибку, а на других работает корректно.
это код фрагмента:
WordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
WordApp.Visible = false;
...
this.copDoc = WordApp.Documents.Add(ref template,
ref missing,
ref missing,
ref isVisible);
this.copDoc.Activate();
...
WordApp.Selection.Find.Execute(ref textData, ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
if (WordApp.Selection.Find.Found)
{
Range r = WordApp.Selection.Range;
r.Text = DateTime.Today.ToLongDateString();
}
...
Когда код выполняет строку, выделенную жирным шрифтом, он вызывает исключение «Нарушение прав доступа» с сообщением «Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена». Если я прокомментирую этот код, документ был создан, и это может означать, что исключение не относится ко всему Word, а только к какой-то конкретной конфигурации в нем.
Вот исключение:
'EdAg.exe': Loaded 'C:\Windows\assembly\GAC\Microsoft.Office.Interop.Word\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll', Binary was not built with debug information.
'EdAg.exe' (Managed): Loaded 'C:\Windows\assembly\GAC\Microsoft.Office.Interop.Word\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll'
First-chance exception at 0x45c7a6f3 in EdAg.exe: 0xC0000005: Access violation.
First-chance exception at 0x6b815095 in EdAg.exe: 0xC0000005: Access violation reading location 0x45c7a6f3.
First-chance exception at 0x6b815095 in EdAg.exe: 0xC0000005: Access violation reading location 0x45c7a6f3.
Может ли кто-нибудь предложить мне более рациональный способ вместо переустановки Word 2007?