Явное преобразование существует при работе со словом в C # - PullRequest
0 голосов
/ 29 июня 2011

Этот код возвращает активное окно инспектора, т. Е. Окно составления почты, и выполняет функцию поиска и замены тела письма.

Но я получаю ошибку:

Невозможно неявно преобразовать тип «объект» в «Microsoft.Office.Interop.Word.Range». Существует явное преобразование (вам не хватает приведения?)

Код здесь для вашей справки ..

 private void button1_Click(object sender, RibbonControlEventArgs e)
    {
          Outlook.Inspector uiInspector = Globals.ThisAddIn.Application.ActiveInspector();
          object uiObject = uiInspector.CurrentItem;
          if (uiObject is Outlook.MailItem && uiInspector.IsWordMail())
          {
              Outlook.MailItem uiItem = (Outlook.MailItem)uiObject;
              Word.Document uiDoc = uiInspector.WordEditor as Word.Document;
              if (uiDoc != null)
              {
                  ***Word.Find uiFind = uiDoc.Range().Find;***
                  uiFind.Text = "ASA^$^$^#^#^#^#^#";
                  while (uiFind.Execute())
                  {
                      Microsoft.Office.Interop.Word.Range rng = uiFind.Parent;
                      rng.Hyperlinks.Add(rng, "http://stack.com=" + rng.Text + "outlook2007");
                      rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
                  }
              }
          }
  }

Как я могу исправить эту ошибку?

Ответы [ 2 ]

3 голосов
/ 29 июня 2011

Вам нужно разыграть эту линию:

Microsoft.Office.Interop.Word.Range rng = uiFind.Parent;

до

var rng = uiFind.Parent as Microsoft.Office.Interop.Word.Range;
0 голосов
/ 29 июня 2011

Попробуйте

Microsoft.Office.Interop.Word.Range rng = (Microsoft.Office.Interop.Word.Range)uiFind.Parent;
...