2017-05-02 1 views
0

Outlook에서 기존 모임 초대를 복사하고 후속 모임 초대를 만들 VBA 매크로를 만듭니다. 내가이 퍼즐에 모든 부분을 가지고 있기 때문에 그것은 꽤 쉬워야한다.Outlook VBA : Word Inspector를 사용하여 추가 모임 만들기 초대

내 문제는 초대 본문입니다. 모든 서식 및 그림이 손실됩니다. 이러한 이유로 특수 서식 및 이미지를 유지하려면 Word Inspector 개체를 사용해야합니다. Word를 사용하고 매크로를 기록하는 코드를 알아 냈습니다.

Word Inspector를 사용하여 텍스트를 복사하는 코드를 알아 냈습니다. 다른 초대장에 붙여 넣는 방법을 모르겠습니다. 어떤 도움을 크게 감상 할 수

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 

내 현재 아웃룩 코드를 참조하십시오. 미리 많은 감사드립니다!

답변

0


저는이 주제에 대한 전문가는 아니지만 Outlook의 C#에서 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; 

:

나는 그런 일을했다.

관련 문제