2016-10-12 3 views
2

Я пытаюсь пропустить лист 2 книги Excel в диапазоны электронной почты для клиентов.Отправка рассылок вместо строк

Диапазоны: A1: B30, C1: D30, E1: F30 и т. Д. Со своим номером счета в A1 & электронной почты в B1 и нижеуказанной информацией.

Каждый раз, когда я пытаюсь запустить электронную почту он приходит с:

Run Time Error 1004

, а затем переходит к ошибкам

Object has been moved or deleted

Есть еще один способ отправки по электронной почте диапазонов или способ изменить это код?

Sub EmailRanges() 
Dim cr As Range 
Set cr = [b1] 
ActiveWorkbook.EnvelopeVisible = True 
Do While cr <> "" 
    cr.Offset(, -1).Resize(30, 2).Select 
    With ActiveSheet.MailEnvelope 
     .Introduction = " Good Morning" 
     .Item.To = cr 
     .Item.Subject = "Just testing, sorry for filling you inbox ^_^ " 
     .item.Send         ' to send 
     .Item.Display        ' to test 
    End With 
    MsgBox cr & " receives " & Selection.Address 
    Set cr = cr.Offset(, 2) 
Loop 
Application.ScreenUpdating = True 
MsgBox "The Customers Have Been Notified" 
End Sub 
+0

На какой строке вы получите сообщение об ошибке? находится на '.Item.Display'? – R3uK

+1

Никогда не слышал о 'ActiveSheet.MailEnvelope.Introduction' или ActiveSheet.MailEnvelope.Item': https://msdn.microsoft.com/en-us/library/office/ff839554(v=office.15).aspx Где вы получить этот код? – Ralph

+0

Ошибки на начальном этапе «cr.Offset (, -1) .Resize (30, 2). Выберите« –

ответ

1

Необходимо более подробно рассказать о своих рекомендациях (книга, лист, ...).

Thx в @Ralph:

A range can be only selected if the sheet is activated first. Otherwise, you'll get an error.

Этот пробег гладко на моем компьютере:

Sub Email_Ranges() 
    Dim rG As Range 
    Dim RangeToSend As Range 
    Dim CustomerMail As String 

    Set rG = ActiveWorkbook.ActiveSheet.[b1] 

    ActiveWorkbook.EnvelopeVisible = True 

    Do While rG.Value <> vbNullString 
     CustomerMail = rG.Value 
     Set RangeToSend = rG.Offset(, -1).Resize(30, 2) 

     'With RangeToSend.Parent.MailEnvelope 

     ''Uncomment below if you get an error 
     rG.Parent.Activate 
     RangeToSend.Select 
     With Selection.Parent.MailEnvelope 

      .Introduction = "Good Morning" 
      With .Item 
       .To = CustomerMail 
       .Subject = "Just testing, sorry for filling your inbox ^_^ " 
       .display 'to test 
       .Send  'to send 
      End With 
     End With 
     Debug.Print CustomerMail & " receives " & RangeToSend.Address 
     Set rG = rG.Offset(, 2) 
    Loop 

    ActiveWorkbook.EnvelopeVisible = False 
End Sub 
+0

Я пробовал ваш код только потому, что раньше я не слышал о [MailEnvelope] (https://msdn.microsoft.com/en-us/library/office/ff836185.aspx). И вы правы: код работает плавно без каких-либо ошибок. Тем не менее, я не смог увидеть электронное письмо, и если я раскомментирую '.Send', тогда я не получаю письмо в Outlook outbox. Но с кодом, предоставленным OP с моим предложением (комментарий выше), я получаю требуемый результат. Не знаю, почему это так. Все, что я могу сказать, это то, что я испытываю здесь в конце. Просто хотел поделиться. – Ralph

+0

@Ralph: Я проверил Outlook отправленные элементы, и у меня есть отправленные письма (только для действительных писем) ... Но первая версия кода отправляет весь лист ...:/Я видел каждую «почту» (интерфейс Excel для подготовьте почту) с точкой останова на '.display' (как' .display', так и '.send' использовать Outlook), но не может показаться, что все они доступны для просмотра, как при прямом использовании Outlook ... – R3uK

+0

Просто чувствовалось, что он не работает в моей системе. Я буду больше смотреть на это, если у меня когда-нибудь будет такая необходимость. Прямо сейчас, все, что имеет значение, - это то, что оно работает для вас и (надеюсь) также для OP. BTW, с кодом OP, на мой компьютер был отправлен только «выбор», и неважно, был ли адрес электронной почты действительным (перенос Outlook в автономном режиме для тестирования и обнаружение писем в папке «Исходящие»). Настройка здесь: Excel 2016 64-бит в Windows7. – Ralph

 Смежные вопросы

  • Нет связанных вопросов^_^