2014-11-18 2 views
-1

Я новичок в VBA, но я стараюсь (-:.почты Excel строки для каждого человека в диапазоне

Я нашел this code, который прекрасно работает в течение двух проблем, за исключением: 1. I нужно вручную изменять диапазон каждый раз, когда я хочу его использовать. 2. Письма не отправляются автоматически. Мне нужно нажать «Отправить» в каждом окне «Новая почта», и есть более ста окон ...

Любые идеи?

Спасибо, Инбар.

+0

В каком формате вы посылаете данные в школах? Электронная таблица? Если это так, создайте цикл «For ... Next», который проверяет имя школы и копию этой цельной строки на новый лист с тем же именем, что и школьная электронная почта. Я отвечу несколько примеров идей в ответ. – Chrismas007

+0

это должно помочь вам добавить нескольких получателей по электронной почте: http://stackoverflow.com/questions/13019651/automated-email-generation-not-resolving-multiple-recipients/13019972#13019972 – SeanC

ответ

0

НАЧАЛЬНАЯ ИМЯ ШКОЛЫ COLUMN «E» Этот макрос будет копировать каждую строку в новый лист, который будет создан и назван в качестве имени школы, используя имя school_name в столбце E. Затем вам необходимо будет отправить по электронной почте каждый лист в соответствующей школе (которая может быть автоматизирована в отдельном макросе.

EDIT: фиксированный код и протестирован рабочий:

Sub SortKids() 

Dim CurRow As Long 
Dim LastRow As Long 
Dim NameTest As String, NameStr As String 
Dim DestRow As Long 
Dim NewWS As Worksheet 

On Error Resume Next 

LastRow = Sheets("Master").Range("A" & Rows.Count).End(xlUp).Row 

For CurRow = 2 To LastRow 
    If Sheets("Master").Range("E" & CurRow).Value = "" Then 
     NameStr = "Error" 
    Else 
     NameStr = Sheets("Master").Range("E" & CurRow).Value 
    End If 
    NameTest = Worksheets(NameStr).Name 
    If Err.Number = 0 Then 
    Else 
     Err.Clear 
     Set NewWS = ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)) 
      NewWS.Name = NameStr 
     Sheets("Master").Rows(1).Copy 
     Sheets(NameStr).Rows(1).PasteSpecial 
    End If 
    DestRow = Sheets(NameStr).Range("A" & Rows.Count).End(xlUp).Row + 1 
    Sheets("Master").Rows(CurRow).Copy 
    Sheets(NameStr).Rows(DestRow).PasteSpecial 
Next CurRow 

MsgBox "Done" 

End Sub 
+0

Еще лучше. Спасибо! – Inbar

+0

@Inbar Теперь я отлаживаю этот код. Я обновлю его в ближайшее время. Он возвращает ошибку. – Chrismas007

+0

Только что увидела ошибку тоже ... – Inbar