Исключение COM при использовании Range.InsertParagraphAfter()

Здравствуйте, ребята, добрый день (время в Аргентине), я получил проект, в котором система форматирует текстовый документ в соответствии с некоторыми требованиями клиента. Документ Word, который я получаю, находится на.doc, а документ Word, который я экспортирую или создаю в другом формате или во внутреннем дизайне, -.docx. Суть в том, что этот код используется для работы со сборками Office12, но когда я добавил новые сборки Office15, произошел сбой.

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

public void Prueba()
        {
            // Open word and a docx file
            var wordApplication = new Application() { Visible = false };
            string strPath=@"<Path>" ;
            string strNombreArchivo = "<Name of the doc>.doc";
            string strddd = "Foo.docx";
            var docOriginal = wordApplication.Documents.Open(strPath+strNombreArchivo, ReadOnly: true);
            //var docddd = wordApplication.Documents.Open(strPath + strddd, ReadOnly: false);
            var docNuevo = wordApplication.Documents.Add(DocumentType: WdDocumentType.wdTypeDocument);



            docOriginal.Content.Copy();
            docNuevo.Content.Paste();
            var docAUsar = docNuevo;




            Range searchRange = docAUsar.Range();
            searchRange.Find.ClearFormatting();
            int nextSearchStart = searchRange.Start;
            searchRange.Start = nextSearchStart;
            Paragraph ParagraphParrafo = searchRange.Paragraphs.First;
            nextSearchStart = ParagraphParrafo.Range.End;
            String titleText = ParagraphParrafo.Range.Text;

            try
            {
                // This is the point where the code crashes.
                searchRange.InsertParagraphAfter(); 
                docAUsar.Save();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }

            // Close word
            wordApplication.Quit();  
            this.Close();
        }

Сообщение об исключении:

System.Runtime.InteropServices.COMException was unhandled
  HelpLink=wdmain11.chm#37373
  HResult=-2146823683
  Message=This method or property is not available because this command is not available for reading.
  Source=Microsoft Word
  ErrorCode=-2146823683
  StackTrace:
       en Microsoft.Office.Interop.Word.Range.InsertParagraphAfter()
       en WindowsFormsApplication3.Form1.Prueba() en C:\Users\Dleekam\Google Drive\Proyectos\WindowsFormsApplication3\WindowsFormsApplication3\Form1.cs:línea 58
       en WindowsFormsApplication3.Form1.Form1_Load(Object sender, EventArgs e) en C:\Users\Dleekam\Google Drive\Proyectos\WindowsFormsApplication3\WindowsFormsApplication3\Form1.cs:línea 25
       en System.Windows.Forms.Form.OnLoad(EventArgs e)
       en System.Windows.Forms.Form.OnCreateControl()
       en System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       en System.Windows.Forms.Control.CreateControl()
       en System.Windows.Forms.Control.WmShowWindow(Message& m)
       en System.Windows.Forms.Control.WndProc(Message& m)
       en System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       en System.Windows.Forms.Form.WmShowWindow(Message& m)
       en System.Windows.Forms.Form.WndProc(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       en System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
  InnerException: 

Интересные вещи:

  1. когда я использую новый файл, он не падает.
  2. когда я пишу контент вручную, он не падает.
  3. когда я копирую и вставляю контент или часть контента, он падает.
  4. Я удаляю содержимое в новом документе и пробую снова, вылетает.

Я считаю, что это связано с форматированием слов или абзацев в оригинальном документе. Так как это происходит только тогда, когда я использую содержание оригинального документа. Но я еще не уверен, что происходит, или как справиться с этим, или как обойти это. Поскольку это исключение не является настолько описательным (я знаю, я не всегда собираюсь получать конкретную информацию или сообщение об ошибке, в котором я нуждаюсь), но у меня уже есть поиск в Интернете, чтобы выяснить, имел ли кто-то такой же, связанный или не связанный вид ошибки.

Любая помощь или ориентация будет и высоко ценится, спасибо всем за ваше время на чтение и понимание кода.

С наилучшими пожеланиями, Дуглас Ликам

1 ответ

Я работал над VS2010, но затем я пытался открыть и запустить этот раздел решения в VS2013, и я работал. Поэтому я должен предположить, что VS2013 распознает элементы в 15 версии офиса, и это не вызывает исключения.

Спасибо за чтение.

Другие вопросы по тегам