Ошибка при отправке почты через outlook с помощью VB - PullRequest
0 голосов
/ 05 февраля 2012

Я очень новичок в VB. Я получаю сообщение об ошибке № 287 (приложение определено или объект определена ошибка) при отправке электронной почты из Excel (outlook 2010). Я установил Tool-> option

Заранее спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 17 мая 2013

Используйте этот код, поменяйте местами файл xlsm с именем low margin.Измените имя листа в коде на свой файл лист.введите вашу электронную почту. Помните, что есть разница между «этой книгой» и «модулем1», чтобы обойти всплывающее окно «Outlook». Я использовал клавиши отправки, чтобы нажать кнопку «Отправить».alt+f+e=%fe

This Workbook


Private Sub Workbook_Open()
Run "Mail_Sheet_Outlook_Body"
End Sub


Module1

Function RangetoHTML(rng As Range)
    ' Works in Excel 2000, Excel 2002, Excel 2003, Excel 2007, Excel 2010, Outlook 2000, Outlook 2002, Outlook 2003, Outlook 2007, and Outlook 2010.
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook

    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    ' Copy the range and create a workbook to receive the data.
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    ' Publish the sheet to an .htm file.
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         FileName:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With

    ' Read all data from the .htm file into the RangetoHTML subroutine.
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")

    ' Close TempWB.
    TempWB.Close savechanges:=False

    ' Delete the htm file.
    Kill TempFile

    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function


Sub Mail_Sheet_Outlook_Body()
    ' You need to use this module with the RangetoHTML subroutine.
    ' Works in Excel 2000, Excel 2002, Excel 2003, Excel 2007, Excel 2010, Outlook 2000, Outlook 2002, Outlook 2003, Outlook 2007, and Outlook 2010.

    Dim rng As Range
    Dim OutApp As Object
    Dim OutMail As Object
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With

    Set rng = Nothing
    Set rng = ActiveSheet.UsedRange
    ' You can also use a sheet name here.
    Set rng = Sheets("Change to sheet name of xslm file").UsedRange

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

    On Error Resume Next
    With OutMail
        .To = "your email"
        .CC = ""
        .BCC = ""
        .Subject = "Low Margin Pricing Alert"
        .HTMLBody = RangetoHTML(rng)
            ' In place of the following statement, you can use ".Display" to
            ' display the e-mail message.
        .Display
        Application.SendKeys "%(FE)", True
    End With
    On Error GoTo 0

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

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub
0 голосов
/ 03 февраля 2013

Чтобы отправить электронное сообщение из Excel через Outlook, вам нужно установить ссылку на Outlook в Excel VBA

Инструменты -> Ссылки -> «Библиотека объектов Microsoft Outlook 12.0»

Затем вы должны использовать аналогичный код, написанный в Excel vba, для отправки почты с использованием outlook

Рабочий лист почты в теле письма

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...