2016-01-11 5 views
0

Im работает над этим кодом для создания Outlook Outlook из Excel. И часть этого кода состоит в том, чтобы вставить форматированный текст внутри тела, как только AppointmentItem не будет полностью разрешен. Он работает так:Ошибка в записи пункта назначения при копировании текста

  • Я сначала создать MailItem и использовать HTMLBody вставлять и форматировать свой текст.
  • Даже не нужно отображать этот элемент, и я использую команду для копирования форматированного текста (сохранение текста в буфере обмена Windows [CTRL + C]).
  • Теперь я создаю AppointmentItem и использую другую команду для вставки текста внутри тела встречи (не совсем текст, но все, что находится внутри буфера обмена Windows [CTRL + V]).

Ну, отлично работает, но я хотел бы избежать этого CTRL + C_ & _CTRL + V вещь, если это возможно. Но это не моя основная проблема, так как я получаю эти «ошибки»:

  • Первая ошибка: Если я загружаю этот код два раза подряд, он должен отображать два назначения Outlook, каждый из которых с форматированием текст. Но первая встреча показывает, что текст дублируется, а второй ничего не показывает. Img: First bug

  • Вторая ошибка: Im, используя код, чтобы разблокировать документ Word (так как Im используя .GetInspector.WordEditor собственности), но даже с помощью этого кода, иногда он показывает эту ошибку и выделить B5.PasteAndFormat (wdFormatOriginalFormatting) линию :

Этот метод или свойство не доступно, поскольку документ заблокирован для редактирования.

Но иногда работает нормально.

Ну, это он, извините за эту тему настолько огромную. Но я понятия не имею, что происходит.

Мой код:

Set oApp = CreateObject("Outlook.Application") 
'======================================================================================== 
'//EMAIL 
'======================================================================================== 
Set ItemEmail = oApp.CreateItem(0) 

With ItemEmail 
    .HTMLBody = " <b>text text text</b> " 
End With 

Set A1 = ItemEmail 
Set A2 = A1.GetInspector 
Set A3 = A2.WordEditor 
Set A4 = A3.Range 

'//Protected file 
Set Protegido = ItemEmail.GetInspector.WordEditor 
If Protegido.ProtectionType <> wdNoProtection Then 
    Protegido.Unprotect 
End If 

A4.FormattedText.Copy 

ItemEmail.Close (olDiscard) 
'________________________________________________________ 


'======================================================================================== 
'// APPOINTMENT 
'======================================================================================== 
Set ItemAppoint = oApp.CreateItem(1) 

With ItemAppoint 
    .Display 
End With 

'//Protected file 
Set Protegido = ItemEmail.GetInspector.WordEditor 
If Protegido.ProtectionType <> wdNoProtection Then 
    Protegido.Unprotect 
End If 

Set B1 = ItemAppoint 
Set B2 = B1.GetInspector 
Set B3 = B2.WordEditor 
Set B4 = B3.Application 
Set B5 = B4.Selection 

B5.PasteAndFormat (wdFormatOriginalFormatting) 
'______________________________________________________ 

ответ

0

Если вы хотите, чтобы назначить встречу в Outlook, с помощью Excel, запустите скрипт ниже.

Private Sub Add_Appointments_To_Outlook_Calendar() 

    'Include Microsoft Outlook nn.nn Object Library from Tools -> References 
    Dim oAppt As AppointmentItem 
    Dim Remind_Time As Double 

    i = 2 
    Subj = ThisWorkbook.Sheets(1).Cells(i, 1) 

    'Loop through entire list of Reminders to be added 
    While Subj <> "" 
     Set oAppt = Outlook.Application.CreateItem(olAppointmentItem) 

     oAppt.Subject = Subj 
     oAppt.Location = ThisWorkbook.Sheets(1).Cells(i, 2) 
     oAppt.Start = ThisWorkbook.Sheets(1).Cells(i, 3) 
     Remind_Time = ThisWorkbook.Sheets(1).Cells(i, 4) * 1 * 60 + ThisWorkbook.Sheets(1).Cells(i, 5) * 60 + ThisWorkbook.Sheets(1).Cells(i, 6) 
     oAppt.ReminderMinutesBeforeStart = Remind_Time 
     oAppt.AllDayEvent = True 
     oAppt.Save 

     i = i + 1 
     Subj = ThisWorkbook.Sheets(1).Cells(i, 1) 
    Wend 
    MsgBox "Reminder(s) Added To Outlook Calendar" 

End Sub 

«Код приходит по этой ссылке: «http://officetricks.com/add-appointment-to-outlook-calendar-through-excel-macro-vba/

Смежные вопросы