У меня есть макрос Excel, который я запускаю, который принимает имена активности, даты и время из электронной таблицы и помещает их в календарь Outlook. Это отлично работает, когда Outlook работает, но когда это не так, макрос не назначает встречи.Макрос не удается создать встречи на основе данных рабочего листа
Я проверил элемент проверки ошибок, который проверяет, работает ли запущенный экземпляр Outlook и если он его не создает, но он все еще работает только при запуске Outlook.
Любые идеи, почему?
Sub SetAppt()
' Dim olApp As Outlook.Application
Dim olApt As AppointmentItem
Dim olApp As Object
'if an instance of outlook is not open then create an instance of the application
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
If er.Number = 429 Then
Set olApp = CreateObject("Outlook.Application.14")
End If
On Error GoTo 0
Set olApp = CreateObject("Outlook.Application")
' Set olApp = New Outlook.Application
'declare an index for all the variables
Dim i As Integer
i = 2
'declare the variables that will hold the data and set their initial value
Dim occ, actName, srtTime, duration As String
occ = "A" & i
actName = "B" & i
srtTime = "F" & i
duration = "G" & i
'for holding different parts of the dates/times that will be split
Dim splitStr() As String
Dim splitDrtion() As String
'loop until there is no more items
While Range(occ).Value <> ""
'create a new appointment
Set olApt = olApp.CreateItem(olAppointmentItem)
'we must split the start time and date
splitStr = Split(Range(srtTime).Value, " ")
Dim oDate As Date
oDate = splitStr(0)
'we must also spilt the duration (number/hour)
splitDrtion = Split(Range(duration).Value, " ")
'with is used to acces the appointment items properties
With olApt
.Start = oDate + TimeValue(splitStr(1))
'if the duration is in hours then multiply number else leave it
If splitDrtion(1) = "Hour" Then
.duration = 60 * splitDrtion(0)
Else
.duration = splitDrtion(0)
End If
.Subject = Range(occ).Value
.Body = Range(actName).Value
.Save
End With
'increment i and reset all the variables with the new number
i = i + 1
occ = "A" & i
actName = "B" & i
srtTime = "F" & i
duration = "G" & i
Set olApt = Nothing
Wend
Set olApp = Nothing
End Sub
Я пробовал ваш фрагмент кода Сиддхарта, но он все еще не назначает встречи. – codingNightmares
У вас есть образцы данных, которые я могу проверить? –
Также есть несколько других изменений. Например, вы должны использовать 'Dim olApt As AppointmentItem' для' Dim olApt As Object' и изменить 'olApp.CreateItem (olAppointmentItem)' на 'olApp.CreateItem (1)', поскольку вы используете позднюю привязку. –