2012-04-20 5 views
2

Я работаю в Outlook 2007, и мне нужно вставить RTF-текст в AppointmentItem. Я нашел несколько сообщений, в которых утверждается, что вы можете сделать это с помощью такого-то, но никакого фактического кода, показывающего, как это сделать. Лучший источник, который я нашел до сих пор, - HereOutlook 2007 - Как вставить RTF-текст в AppointmentItem

И я последовал за ним, но в конце ничего не встает в пункт назначения.

Ниже то, что у меня есть:

Word.Document wd = AppointmentItem.GetInspector.WordEditor as Word.Document; 

// *Assume that I have all the RTF text that I want to copy set up and ready in the clipboard and is ready to be inserted(copied) into the Appointment Item. 

//This doesnt seem to work 
wd.Content.Select(); 
wd.Content.Paste(); 

//This also doesnt seem to work 
(AppointmentItem.GetInspector.WordEditor as Word.Document).Content.Select(); 
(AppointmentItem.GetInspector.WordEditor as Word.Document).Content.Paste(); 

Итак, в соответствии с тем, что я читал и видел это как ваш предположим вставить RTF в пункт назначения, но я до сих пор не в состоянии получить что-нибудь в AppointmentItem.

Теперь, как говорится, если я смотрю на эту переменную:

(AppointmentItem.GetInspector.WordEditor as Word.Document).Content.Text; 

Но если я смотрю на AppointmentItem.Text он по-прежнему без изменений.

Теперь нет функции AppointmentItem.paste() или AppointmentItem.text.paste(), и у вас нет доступа к переменной RTF в пункте назначения.

Так может кто-нибудь сказать мне, что мне не хватает? как я могу вставить в AppointmentItem или получить RTF-текст в AppointmentItem.

Спасибо.

ответ

1

Проблема в том, что вы не указываете выбор для копирования и вставки. Копирование и вставка работает полностью как пользователь, делающий копию и вставку, вы сначала выбираете нужный диапазон.

Попробуйте

wd.Sections[1].Range.Copy(); 
document.Range(0, 0).PasteAndFormat(Word.WdRecoveryType.wdPasteDefault); 

Хорошая рецензия вы можете найти похожие на это Tom_Xu MSFT пишут в теме под названием «Load a .doc file content in Outlook.MailItem»

0

Для тех, кто пытается понять это с Office 2010 , 2013:

string sRtfBody = "{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Century Gothic;}}\viewkind4\uc1\pard\f0\fs20 This course will help you appreciate the beauty of numbers in some ways that you may have never considered.\par}"; 
Outlook.AppointmentItem aiMeeting = (Outlook.AppointmentItem)this._Outlook.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem); 
aiMeeting.RTFBody = Encoding.ASCII.GetBytes(sRtfBody);