VBA - Ошибка выполнения 4605. Этот метод или свойство недоступны, так как окно документа не активно - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь использовать VBA (в Word) для создания встречи в Outlook на основе данных, предоставленных в пользовательской форме, которая загружается при открытии документа Word, содержащего макрос. Кажется, все работает нормально, но я получаю ошибку во время выполнения, когда макрос выполняет функцию вставки.

Dim OutApp As Object
Dim OutMail As Object
Dim OutInsp As Outlook.Inspector
Dim WdApp As Word.Application
Dim OutDoc As Word.Document
Dim WdSel As Word.Selection

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

If request_Form.ComboBox3.Value = "****" Then
With ActiveDocument.Bookmarks("recipient_Name")
    .Range.Text = "Uwe"
End With
With ActiveDocument.Bookmarks("applicant_Name")
    .Range.Text = Replace(request_Form.TextBox1.Value, "_", ", ")
End With
With OutMail
    .MeetingStatus = olMeeting
    .RequiredAttendees = "@live.in"
    .Subject = request_Form.TextBox1.Value & " Work From Home"
    .Location = "Home"
    .BusyStatus = olFree
    .ReminderSet = False
    If request_Form.CheckBox1.Value = False Then
        .Start = DateValue(request_Form.TextBox2.Value) + TimeValue(request_Form.ComboBox1.Value)
        .End = DateValue(request_Form.TextBox2.Value) + TimeValue(request_Form.ComboBox2.Value)
    Else
        .AllDayEvent = True
    End If
    .Display
End With


Set OutInsp = OutMail.GetInspector
Set OutDoc = OutInsp.WordEditor
Set WdApp = OutDoc.Application
Set WdSel = WdApp.Windows(1).Selection

Documents("Home Office Request Form.docm").Range.Copy

With OutMail
    WdSel.PasteAndFormat Type:=wdFormatOriginalFormatting
End With

save_file
 MsgBox "A copy of this file has been stored in your desktop for your 
 reference.", vbOKOnly + vbInformation, "Status Information"

End Sub

«Функция макроса - программа создает встречу на основе данных, заполненных пользовательской формой, и копирует весь контент в текстовом документе и вставляет его в текст встречи». Когда выполняется этот фрагмент кода "wdsel.pasteandformat", это приводит к ошибке времени выполнения, но, что интересно, эта ошибка, по-видимому, не возникает довольно часто, поэтому мне трудно понять, что происходит не так, как надо, допустим, 70% времени работы хорошо и, вероятно, в остальных 30% случаев это не так.

Я был бы очень рад, если бы кто-нибудь помог мне понять, что не так с приведенным выше кодом.

Спасибо за вашу помощь.

С уважением, Рахул

1 Ответ

0 голосов
/ 03 января 2019

Итак, у нас есть ответ на вашу проблему.Вот оно.

Скорее всего, когда вы открываете Outlook, это окно Outlook, которое становится активным.В этот момент доступ к объекту выделения в неактивном окне Word может стать недоступным.Чтобы решить эту проблему, возьмите все, что вы хотите от Word, прежде чем открывать Outlook.Это включает в себя копирование текста в память и использование его для вставки в Outlook.

...