2016-08-16 12 views
0

TypeTextSelectionに呼び出すとスロー "このコマンドは使用できません。以下は例外Outlook VSTO - 選択時にTypeTextを呼び出すと「このコマンドは使用できません」例外

enter image description here

は私のコード

public void AddFilePaths(List<string> urls) 
{ 
    if (urls.Count > 0) 
    { 
     MailItem mi = null; 
     bool newMailItem = false; 

     mi = MyAddIn.Application.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem); 
     mi.Body = "New email body"; 
     newMailItem = true; 

     mi.Display(); 
     inspector = MyAddIn.Application.ActiveInspector(); 

     if (mi != null) 
     { 
      foreach (var url in urls) 
      { 
       AddPathToActiveInspector(urls); 
      } 
     } 
    } 
} 

public void AddLinkToCurrentInspector(string url) 
{ 
    var inspector = MyAddIn.Application.ActiveInspector(); 
    var currMessage = inspector.CurrentItem; 
    Microsoft.Office.Interop.Word.Document word = currMessage.GetInspector.WordEditor; 
    dynamic wordapp = word.Application; 
    const string text = "\n"; // thisfor some reason will not add new line 
    Microsoft.Office.Interop.Word.Selection sel = word.Windows[1].Selection; 
    sel.TypeText(text); // this often errors 
    string address = url; 
    string subAddress = ""; 
    string screenTip = ""; 
    string textToDisplay = url; 
    wordapp.ActiveDocument.Hyperlinks.Add(sel.Range, ref address, ref subAddress, ref screenTip, ref textToDisplay); 
    if (word.ProtectionType != Microsoft.Office.Interop.Word.WdProtectionType.wdNoProtection) word.Unprotect(); 
    sel.TypeText(" "); 
} 

答えて

0

を、私もこの問題を解決しました。上のコードよりもうまく動作し、従うのがより簡単なコードは以下のとおりです。 @joeshwaに感謝しています。

public void AddLinkToCurrentInspector(string url) 
    { 
     object link = url; 
     object result = "url"; 
     object missing = Type.Missing; 

     var inspector = MyAddIn.Application.ActiveInspector(); 
     MailItem currMessage = inspector.CurrentItem; 
     Microsoft.Office.Interop.Word.Document doc = currMessage.GetInspector.WordEditor; 
     Microsoft.Office.Interop.Word.Selection sel = doc.Windows[1].Selection; 
     doc.Hyperlinks.Add(sel.Range, ref result, ref missing, ref missing, ref link, ref missing); 
     sel.EndKey(Microsoft.Office.Interop.Word.WdUnits.wdLine); 
     sel.InsertAfter("\n"); 
     sel.MoveDown(Microsoft.Office.Interop.Word.WdUnits.wdLine); 
    } 
1

であるあなたはTypeTextを呼び出す必要はありません - ちょうどTextプロパティを設定:この問題の答えに基づいて

Application.ActiveInspector.WordEditor.Application.Selection.Text = "test" 
+0

不幸なことに、違いはありません。ありがとうドミトリー – pixel

+0

あなたは編集モードでインスペクタでこれを呼び出していますか?それとも、読み取り専用のインスペクタですか? –

+0

コードを組み込むように投稿を更新しました。ドミトリーありがとうございました – pixel

関連する問題