none
Ошибка в примере C# по проверке правописания RRS feed

  • Вопрос

  • После загрузки примера работы с Word http://www.codeproject.com/KB/cs/spellcheckdemo.aspx и конвертации проекта в VS2008 в проекте появились ссылки на Interop.Word и Microsoft.Office.Core с желтыми треугольниками с восклицательными знаками. Ссылки я исправил, но в функции

    public void fSpellCheck(TextBox tBox, Label lLbl)
    {
     int iErrorCount = 0;
     Word._Application app = new Word.Application();
     if (textBox1.Text.Length > 0)
     {
      app.Visible = false; // ошибка
      object template = Missing.Value;
      object newTemplate = Missing.Value;
      object documentType = Missing.Value;
      object visible = true;
      object optional = Missing.Value;
      Word._Document doc = app.Documents.Add(ref template, ref newTemplate, ref documentType, ref visible); // ошибка
      doc.Words.First.InsertBefore(tBox.Text);
      Word.ProofreadingErrors we = doc.SpellingErrors;
      iErrorCount = we.Count;
      doc.CheckSpelling(ref optional, ref optional, ref optional, ref optional,
       ref optional, ref optional, ref optional,
       ref optional, ref optional, ref optional, ref optional, ref optional);
      if (iErrorCount == 0)
       lLbl.Text = "Spelling OK. No errors corrected ";
      else if (iErrorCount == 1)
       lLbl.Text = "Spelling OK. 1 error corrected ";
      else
       lLbl.Text = "Spelling OK. " + iErrorCount + " errors corrected ";
      object first = 0;
      object last = doc.Characters.Count - 1;
     
      tBox.Text = doc.Range(ref first, ref last).Text;
     }
     else
      lLbl.Text = "Textbox is empty";
     object saveChanges = false;
     object originalFormat = Missing.Value;
     object routeDocument = Missing.Value;
     app.Quit(ref saveChanges, ref originalFormat, ref routeDocument); 
    }
    

    на строках, в комментариях которых указана ошибка, программа дает исключение:

    Невозможно привести COM-объект типа "Microsoft.Office.Interop.Word.ApplicationClass" к интерфейсному типу "Microsoft.Office.Interop.Word._Application". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID "{00020970-0000-0000-C000-000000000046}" возвратил следующую ошибку: Интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).

    Подскажите, пожалуйста, как исправить. Проект находится http://zalil.ru/31571280.


    Alex
    18 августа 2011 г. 7:46

Ответы

  • Причина исключения содержится в исключении. А вот откуда у него растут ноги, надо гуглить. Но раз на одном PC работает, а на другом нет, то скорее всего, истина где-то в дистрибуиве офиса. Попробуйте поставить виртуалку, на нее чистую ОС и на чистую систему накатить тока офис и проверить.

    Если, что увижу по Вашей теме, отпишусь.


    [My blog] [My E-mail]
    • Помечено в качестве ответа Abolmasov Dmitry 29 августа 2011 г. 8:32
    19 августа 2011 г. 15:05

Все ответы

  • Помню, когда-то когда была необходимость работать с Word, там где я смотрел, были примеры для работы с Word 2003 и Word 2007. Начальный код по инициализации отличался. Возможно у Вас похожая ситуация. Проверьте с какой версией Word работает пример кода и какой Word стоит у Вас.
    [My blog] [My E-mail]
    18 августа 2011 г. 9:47
  • Очень странно, но тот же код работает в Windows 7 без проблем. Очень бы хотелось узнать, с помощью каких средств или по каким методикам можно узнать причину этой ошибки. Проект,  который работает в Windows 7, но не работает в XP SP3 (причем, везде office word 2007 и VS2008 в одинаковой комплектации), разместил на http://zalil.ru/31577974

    Alex
    19 августа 2011 г. 14:11
  • Причина исключения содержится в исключении. А вот откуда у него растут ноги, надо гуглить. Но раз на одном PC работает, а на другом нет, то скорее всего, истина где-то в дистрибуиве офиса. Попробуйте поставить виртуалку, на нее чистую ОС и на чистую систему накатить тока офис и проверить.

    Если, что увижу по Вашей теме, отпишусь.


    [My blog] [My E-mail]
    • Помечено в качестве ответа Abolmasov Dmitry 29 августа 2011 г. 8:32
    19 августа 2011 г. 15:05
  • Спасибо за ответы, попробую на чистой системе.
    Alex
    20 августа 2011 г. 14:16