#excel #vba #ms-access #outlook #ms-word
#excel #vba #ms-access #outlook #ms-word
Вопрос:
Я хочу перенести данные из сообщения Outlook в Access, используя Excel в качестве «посредника» для удобства ссылки на данные. Я смог скопировать из Outlook в Excel и импортировать данные из Excel в Access.
Я собираюсь обработать весь процесс из Access.
Строка кода в Outlook VBA для копирования текста электронной почты не работает в Access VBA. Я думаю, у меня проблема с переменной dim или set.
Ошибка
Время выполнения 287 Ошибка, определяемая приложением или объектом.
Я могу закрыть открытую электронную почту с помощью VBA из Access, поэтому я знаю, что приложения общаются друг с другом.
Private Sub cmdNewFromEmail_Click()
Dim strWhere As String
Dim xl As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim filePath As String
Dim objol As Outlook.Application
Dim MyInspector As Outlook.Inspector
Dim objItem As Outlook.MailItem
Dim CurrentMessage As Outlook.MailItem
Set xl = New Excel.Application
filePath = "S:UserNanme" amp; "Excel Test File" amp; ".xlsx"
Set xlBook = xl.Workbooks.Open(filePath)
Set xlSheet = xlBook.Worksheets(1)
'Set OL = GetObject(, "Outlook.Application")
Set objol = New Outlook.Application
Set MyInspector = Outlook.ActiveInspector
Set objItem = MyInspector.CurrentItem
xl.Visible = True
'OL.Visible = True
DoCmd.GoToRecord , , acNewRec
'Setting up a new file in Access
Me.File_Number = Nz(DMax("File_Number", "ClaimInfo1", strWhere), 0) 1
Me.Invoice_Number = Me.File_Number amp; "-01"
DoCmd.RunCommand acCmdSaveRecord
'Binds Client Billing tab to Invoicing form when setting up new file
Me.SubformContainer.SourceObject = "Appraisals_Subform2"
'Sets focus on the appropriate tab.
Forms!Invoicing_Form.TabCtlEval = 0
'---------------------------------------------------------------------
With objItem
'Set CurrentMessage = ActiveInspector.CurrentItem
' *** This is the line causing the problem.
' Other things I've tried are commented out.***
Set CurrentMessage = MyInspector.WordEditor.Range.FormattedText.Copy
'Set CurrentMessage = MyInspector
'CurrentMessage.GetInspector().WordEditor.Range.FormattedText.Copy
'CurrentMessage.Close olSave
'CurrentMessage.GetInspector().WordEditor.Range.FormattedText
'CurrentMessage.Copy
End With
'---------------------------------------------------------------------
With xlSheet
.Range("A1").Select
.Paste
.Range("F5").Value = "Claim: "
.Range("G5").Formula = "=INDEX(B1:B100,MATCH(F5,A1:A100,0))"
End With
Me.Claim_Number = Range("G5")
End Sub
Комментарии:
1. Какая строка выдает ошибку?
2. @june7 тот, который ОП пометил как «это строка, вызывающая проблему »
3. Эта строка ссылается на множество объектов. Я бы предложил разбить его, уменьшив масштаб и назначив каждый слой по очереди, чтобы увидеть, где он прерывается
4. @chrisneilsen Я ценю предложение. Это звучит достаточно разумно, но я не совсем уверен, как это сделать. Строка была построена с помощью intellisense. Возможно, я мог бы использовать Myrange как диапазон и FormattedText как строку, но что мне делать с WordEditor? И как бы я тогда собрал их все вместе?
5. Вы пытаетесь назначить метод (
Copy
) объектной переменной. Просто удалитеSet CurrentMessage =