Макрос Excel: ошибка во время выполнения "1004" Общая ошибка почты

Мы планируем обновить всех наших пользователей до Outlook 2010 и Exchange 2010 в ближайшее время, но столкнулись с несколькими головными болями при переносе Outlook. У нас есть электронная таблица Excel, которая в основном представляет собой отчет о расходах, который автоматически отправляется по электронной почте соответствующим людям, когда они нажимают кнопку в электронной таблице. Для этого используется какой-то макрос (я не программист). Он хорошо работает с Outlook 2003, который есть у нас сейчас, но наша тестовая группа пользователей не может его использовать - они получают сообщение об ошибке ниже.

Может ли кто-нибудь помочь понять это. Это сводит меня с ума!

Я пытался отправить его с открытым Outlook и закрытым.введите описание здесь

ОБНОВЛЕНИЕ: решено

Проблема заключалась в нашей настройке фермы Citrix... Поскольку MS не разрешает параллельную установку версий outlook, как это делается со всеми другими офисными приложениями, нам пришлось установить outlook 2010 на "тестируемом" сервере приложений xen. Поскольку эти пользователи были тестовыми пользователями Outlook 2010, их профили имели только разрешения на использование Outlook 2010 и Outlook 2010 в качестве почтового клиента по умолчанию. Проблема возникла, когда они открыли электронную таблицу в Excel 2003 на рабочей ферме xenapp, где Outlook 2010 не был установлен. поэтому он пытался отправить почту через почтовый клиент по умолчанию (outlook 2010), которого не было на этом сервере. И поскольку их учетные записи были настроены только на использование Outlook 2010, Excel не знал, что делать.

Мы решили создать новое опубликованное приложение Excel в Citrix, которое было установлено на том же сервере, что и наша установка Outlook 2010, ограничить ферму одним тестовым сервером и опубликовать это приложение для наших тестовых пользователей, удаляя при этом их старый Excel. приложение. Таким образом, Outlook и Excel работают только на тестовом сервере.

1 ответ

Решение

Я могу только показать вам код, к которому мне нужно было перейти, чтобы моя электронная почта, вызванная кнопкой в ​​электронной таблице Excel, работала. Они изменили некоторые вещи, поэтому старый код не работал так хорошо.

Private Sub EmailBlahbutton_Click()

Dim mOutlookApp As Object
Dim OutMail As Object
Dim Intro As String

On Error GoTo ErrorHandler

Set mOutlookApp = GetObject("", "Outlook.application")
Set OutMail = mOutlookApp.CreateItem(0)

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

'These are the ranges being emailed.
ActiveSheet.Range(blahblahblah).Select

'Intro is the first line of the email
Intro = "BLAHBLAHBLHA"

'Set the To and Subject lines.  Send the message.
With OutMail
    .To = "blahblah@blah.com"
    .Subject = "More BLAH here"
    .HTMLBody = Intro & RangetoHTML(Selection)
    .Send
End With

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

ActiveSheet.Range("A1").Select
ActiveWindow.ScrollColumn = ActiveCell.Column
ActiveWindow.ScrollRow = ActiveCell.Row

Set OutMail = Nothing
Set mOutlookApp = Nothing

Exit Sub

ErrorHandler:
    Set mOutlookApp = CreateObject("Outlook.application")
    Resume Next

End Sub

Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-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 new workbook to past the data in
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 a 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 RangetoHTML
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 we used in this function
Kill TempFile

Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing

End Function
Другие вопросы по тегам