Помощь в выборе нескольких диапазонов на разных листах - PullRequest
0 голосов
/ 18 января 2019

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

Как видно из приведенного ниже кода, он успешно отправляет электронное письмо с выбранным диапазоном на предполагаемыйлюдей с диапазонами, которые я выбрал внизу.

Теперь мне нужно попробовать и изменить

ActiveSheet.Range("B8:D304").Select

, чтобы также выбрать аналогичный диапазон на другом листе "Ticket Tracker" и поместитьчто внизу, или где-нибудь в электронном письме.

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

Я попробовал Union, но обнаружил, что они не влияют на несколько листов.

Sub SendTrackerForEmails()

   ' Select the range of cells on the active worksheet.
   ActiveSheet.Range("B8:D304").Select

   ' Show the envelope on the ActiveWorkbook.
   ActiveWorkbook.EnvelopeVisible = True

   ' Set the optional introduction field thats adds
   ' some header text to the email body. It also sets
   ' the To, CC and Subject lines.


   With ActiveSheet.MailEnvelope
      .Introduction = ""
      .Item.To = Range("F17").Value
      .Item.Subject = Worksheets("Splash Screen").Range("H10").Value & "'s 
Email Tracker Results"
      .Item.CC = Range("F26").Value & ";" & Range("H9").Value
   End With
End Sub

Я ожидаю, что второй диапазон в "Ticket Tracker" будетпомещен в электронное письмо, хотя я не уверен, как бы вы выбрали это.

Я попробовал следующий ответ, но если вы читаете комментарии, это вызывает ошибку mesмудрец при попытке скрыть ошибки.

Похоже, что это связано с тем, что почтовый конверт открыт.

1 Ответ

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

Достойным решением этой проблемы может быть:

  1. вставка нового листа
  2. вставка данных с 2 отдельных листов на этот новый лист
  3. отправьте электронное письмо с нового листа
  4. , затем удалите новый лист.

См. Ниже:

Sub SendTrackerForEmails()

    Dim dataSheet As Worksheet: Set dataSheet = ActiveSheet
    Dim newSheet As Worksheet
    Dim ticketSheet As Worksheet: Set ticketSheet = ThisWorkbook.Worksheets("Ticket Tracker")

    ' insert a new sheet
    With ThisWorkbook
        Set newSheet = .Sheets.Add(After:=.Worksheets(.Worksheets.Count))
    End With

    ' copy data from 2 sheets
    dataSheet.Range("B8:D304").Copy newSheet.Range("A1")
    ticketSheet.Range("B8:D304").Copy newSheet.Range("A300")

    ' Show the envelope on the Workbook
    newSheet.Activate
    ThisWorkbook.EnvelopeVisible = True

    ' Set the optional introduction field thats adds
    ' some header text to the email body. It also sets
    ' the To, CC and Subject lines.
    With newSheet.MailEnvelope
        .Introduction = ""
        .Item.To = dataSheet.Range("F17").Value
        .Item.Subject = ThisWorkbook.Worksheets("Splash Screen").Range("H10").Value & "'s Email Tracker Results"
        .Item.CC = dataSheet.Range("F26").Value & ";" & dataSheet.Range("H9").Value
        .Send ' added this
    End With

    ' added this
    ThisWorkbook.EnvelopeVisible = False

    Application.DisplayAlerts = False
    newSheet.Delete
    Application.DisplayAlerts = True
End Sub
...