实现环境:Visual Studio 2010, Outlook 2010, VSTO runtime 4.0
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Tools.Ribbon;
using Outlook = Microsoft.Office.Interop.Outlook;
using Word = Microsoft.Office.Interop.Word;
using System.Windows.Forms;
namespace OutlookAddIn23
{
public partial class Ribbon1
{
private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
}
private void button1_Click(object sender, RibbonControlEventArgs e)
{
try
{
Outlook.Application objApplication = Globals
.ThisAddIn.Application;
Outlook.Inspector objInspector = objApplication
.ActiveInspector();
Outlook.MailItem objMailItem = objInspector.CurrentItem;
if (objMailItem != null)
{
InsertTexttoMailBody(objMailItem, "This is a test.");
}
}
catch (Exception ex)
{
MessageBox.Show(string.Format("Stack:\n{0}\nMessage:\n{1}",
ex.StackTrace, ex.Message), "OutlookAddIn23Exception");
}
}
private void InsertTexttoMailBody(Outlook.MailItem objMailItem,
string InsertText)
{
try
{
Outlook.Inspector objInspector = objMailItem.GetInspector;
Word.Document objDocument = objInspector.WordEditor as
Word.Document;
Word.Selection objSelection = objDocument.Application.Selection;
//这里定义一个Range十分重要,直接用objSelection进行操作貌似不行。
Word.Range objRange = objSelection.Range;
objRange.InsertAfter(InsertText);
//放弃光标原来位置并向后移到尾部
objRange.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
//重新高定光标
objRange.Select();
}
catch (Exception ex)
{
MessageBox.Show(string.Format("Stack:\n{0}\nMessage:\n{1}",
ex.StackTrace, ex.Message));
}
}
}
}
VB.NET
Imports Microsoft.Office.Tools.Ribbon
Imports Word = Microsoft.Office.Interop.Word
Public Class Ribbon1
Private Sub Ribbon1_Load(ByVal sender As System.Object, ByVal e As _
RibbonUIEventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button1.Click
Dim objApplication As Outlook.Application
Dim objInspector As Outlook.Inspector
Dim objDocument As Word.Document
Dim objSelection As Word.Selection
Dim objRange As Word.Range
Try
objApplication = Globals.ThisAddIn.Application
objInspector = objApplication.ActiveInspector
objDocument = TryCast(objInspector.WordEditor, Word.Document)
If objDocument IsNot Nothing Then
objSelection = objDocument.Application.Selection
objRange = objSelection.Range
objRange.InsertAfter("This is a Test")
objRange.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
objRange.Select()
End If
Catch ex As Exception
MsgBox("Stack:" + Chr(13) + ex.StackTrace + Chr(13) + "Message:" + _
Chr(13) + ex.Message, Title:="OutlookAddIn24 Exception")
End Try
End Sub
End Class