2017-05-02 16 views
0

OutlookでVBAマクロを作成して、既存の会議招待状をコピーし、フォローアップ会議招待状を作成します。私はこのパズルのすべての部分を持っているので、それはかなり簡単にする必要があります。Outlook VBA:Wordインスペクタを使用してフォローアップ会議を作成する

私の問題は招待状の本文にあります。すべての書式設定と画像が失われます。このため、Word Inspectorオブジェクトを使用して特殊な書式や画像を保持する必要があります。 Wordを使ってコードを見つけ、マクロを記録しました。

Wordのインスペクタを使用してテキストをコピーするコードを見つけましたが、別の招待状に貼り付ける方法がわかりません。すべてのヘルプをいただければ幸いです

Sub scheduleFollowUpMeeting() 
    'Declarations 
    Dim obj As Object 
    Dim Sel As Outlook.Selection 
    'Selecting the Email 
    If TypeOf Application.ActiveWindow Is Outlook.Inspector Then 
    Set obj = Application.ActiveInspector.currentItem 
    Else 
    Set Sel = Application.ActiveExplorer.Selection 
    If Sel.Count Then 
     Set obj = Sel(1) 
    End If 
    End If 

    If Not obj Is Nothing Then 
    MsgBox "The original meeting has been copied." & vbCrLf & "Please kindly update any new details like date/time.", , "Follow Up Meeting - Amit P Shah" 
    Dim objFollowUp As Outlook.AppointmentItem 
    Set objFollowUp = Application.CreateItem(olAppointmentItem) 
    'Copies existing details from original Invite 
    With objFollowUp 
     .MeetingStatus = olMeeting 
     .Subject = "Follow Up: " & obj.Subject 
     .Body = obj.Body 
     .Start = Now + 1 'Takes today's date and adds 1 day 
     .End = DateAdd("n", obj.Duration, .Start) 
     'Other 
     .AllDayEvent = obj.AllDayEvent 
     .BusyStatus = obj.BusyStatus 
     .Categories = obj.Categories 
     .Companies = obj.Companies 
     .ForceUpdateToAllAttendees = obj.ForceUpdateToAllAttendees 
     .Importance = obj.Importance 
     .Location = obj.Location 
     .OptionalAttendees = obj.OptionalAttendees 
     .ReminderMinutesBeforeStart = obj.ReminderMinutesBeforeStart 
     .ReminderOverrideDefault = obj.ReminderOverrideDefault 
     .ReminderPlaySound = obj.ReminderPlaySound 
     .ReminderSet = obj.ReminderSet 
     .ReminderSoundFile = obj.ReminderSoundFile 
     .ReplyTime = obj.ReplyTime 
     .RequiredAttendees = obj.RequiredAttendees 
     .Resources = obj.Resources 
     .ResponseRequested = obj.ResponseRequested 
     .Sensitivity = obj.Sensitivity 
     .UnRead = obj.UnRead 

     .Display 
    End With 
    End If 

End Sub 

Sub copyPaste() 
    Dim objOL As Outlook.Application 
    Dim objNS As Outlook.NameSpace 
    On Error Resume Next 
    Set objOL = Application 
    If objOL.ActiveInspector.EditorType = olEditorWord Then 
     Set objDoc = objOL.ActiveInspector.WordEditor 
     Set objNS = objOL.Session 
     Set objSel = objDoc.Windows(1).Selection 
     objSel.WholeStory 
     objSel.Copy 
     objSel.PasteAndFormat (wdFormatOriginalFormatting) 
    End If 
    Set objOL = Nothing 
    Set objNS = Nothing 
End Sub 

私の現在のOutlookのコードを参照してください。事前に多くの感謝!

答えて

0



私はこのテーマの専門家ではありませんが、私はC#でOutlookのAppointmentItemを操作して操作していました。

実際に、あなたが言ったように、別の会議で会議の本体をコピーしようとすると、特殊な書式設定、画像などが失われます。 新しいボディにはフォーマットのないキャラクターしか含まれません。 Bodyプロパティに書式設定されたテキストを配置できないと思いますが、rtfbodyプロパティを使用する必要があります。または、元の予定の本文をコピーするときと同じように、InspectorオブジェクトのWordEditorプロパティを使用します。

したがって、作成している新しいアイテムのWordEditor(元のコンテンツを取得したようなもの)を使用して、そのコンテンツを追加してみてください。

これは、C#のAppointmentItemの本文に書式設定されたテキストを配置するために必要な作業です。あなたは、作成した変数を解放する必要があるかもしれませんが、私はそれについてはよく分からない、その後

Word.Document myDoc = myItem.GetInspector.WordEditor; 
Word.Paragraphs paragraphs = myDoc.Content.Paragraphs; 

Word.Paragraph para = paragraphs.Add(); 
para.Range.Text = yourFormattedTextHere; 

は、私はそのような何かをしました。

関連する問題