Назначить встречу в Outlook, используя VBA - PullRequest
0 голосов
/ 11 февраля 2019

Я новичок в программировании, поэтому я был бы признателен за помощь в решении этой проблемы: у меня есть лист Excel, в котором пользователи будут вводить данные о людях (имя, адрес электронной почты, номер мобильного телефона, услуга, дата назначения, тип встречи,время встречи), когда нажимается кнопка, автоматически создается черновик электронной почты в Outlook, а также назначается встреча, которая будет отправлена ​​участнику.Используя приведенный ниже код, я не могу перетащить адрес электронной почты члена или дату и время встречи из листа Excel в назначение Outlook.

Sub Button2test_Click()
    Dim rng As Range
    Dim OutApp As Object
    Dim OutMail As Object

    Set rng = Nothing
     On Error Resume Next
    ' Only send the visible cells in the selection.
    Set rng = Selection.SpecialCells(xlCellTypeVisible)
    Set rng = 
    Sheets("Sheet1").RangeToHtml("D4:D12").SpecialCells(xlCellTypeVisible, 
    xlTextValues)
    On Error GoTo 0

    If rng Is Nothing Then
    MsgBox "The selection is not a range or the sheet is protected. " & _
           vbNewLine & "Please correct and try again.", vbOKOnly
    Exit Sub
    End If

    With Application
    .EnableEvents = False
    .ScreenUpdating = False
    End With

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
    .To = Range("$F$2")
    .CC = Range("$B$2")
    .BCC = ""
    .Subject = "Upcoming Scheduled Appointment"
    .HTMLBody = Range("$K$2")
    ' In place of the following statement, you can use ".Display" to
    ' display the e-mail message.
    .Display
    End With
    On Error GoTo 0

    With Application
    .EnableEvents = True
    .ScreenUpdating = True
     End With

     Set OutMail = Nothing
     Set OutApp = Nothing


    Set rng = Nothing
    On Error Resume Next
    ' Only send the visible cells in the selection.
    Set rng = Selection.SpecialCells(xlCellTypeVisible)
    Set rng = 
    Sheets("Sheet1").RangeToHtml("D4:D12").SpecialCells(xlCellTypeVisible, 
     xlTextValues)
    On Error GoTo 0

    If rng Is Nothing Then
    MsgBox "The selection is not a range or the sheet is protected. " & _
           vbNewLine & "Please correct and try again.", vbOKOnly
    Exit Sub
    End If

    With Application
    .EnableEvents = False
    .ScreenUpdating = False
    End With

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(olAppointmentItem)
    OutMail.MeetingStatus = olMeeting

    On Error Resume Next
    With OutMail
    .To = Range("$F$2")
    .Subject = Range("I2")
    .Location = Range("I2")
    .Importance = True
    .Start = Range("J2") & Format(Date + "H2")
    .End = Range("J2") & Format(Time + 0)
    .ReminderMinutesBeforeStart = 30
    .Body = Range("K2")
    .Display
    End With


    With Application
    .EnableEvents = True
    .ScreenUpdating = True
    End With

   Set OutMail = Nothing
   Set OutApp = Nothing
End Sub

1 Ответ

0 голосов
/ 12 февраля 2019

Очень трудно догадаться, что пытается сделать ваш код.Вот несколько моментов, с которых можно начать.

При использовании в таком виде On Error Resume Next означает «не беспокойтесь о каких-либо ошибках, потому что мне нравятся загадочные ошибки.На данный момент просто удалите все On Error операторы.

Некоторые из ваших кодов обращаются к явным ячейкам: D4: D12, F2, B2, K2 и I2.Другой код обращается к видимым ячейкам внутри выделения.Смешение двух методов для адресации ячеек не имеет смысла для меня.

У вас есть Set rng = Nothing до Set OutApp = Nothing, тогда у вас снова тот же блок кода, но с дополнениями.Вам нужно решить, какой блок кода вы хотите.

Как вы думаете, что делает этот оператор:

Set rng = 
Sheets("Sheet1").RangeToHtml("D4:D12").SpecialCells(xlCellTypeVisible, 
xlTextValues)

Вы не можете распределить оператор по нескольким строкам, если в конце нет подчеркиванияиз линий, которые будут продолжены.Даже если это было синтаксически правильно, я не понимаю, насколько это утверждение относится к остальной части макроса.

Действительно ли ячейка K2 - это HTML-тело?Я подозреваю, что это текстовое тело.

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

...