ZlydenGL
Moderator | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Йэх... Попробую сначала описать, как бы я подобную задачу писал 1. Написал бы ОТДЕЛЬНУЮ процедуру, которая отправляет ПРОИЗВОЛЬНЫЙ контент на указанное мыло. Что-то вроде этого: Код: Public Sub SendEMail(SendFrom as String, SendTo As String, Subject As String, Body As String, Conf As String) Dim iMsq As Object Set iMsg = CreateObject("CDO.Message") With iMsg Set .Configuration = Conf .From = SendFrom .To = SendTo .CC = "" .BCC = "" .Subject = Subject .TextBody = Body .Send End With End Sub | 2. Отдельным блоком написал бы парсер текста. При этом я бы немного переформатировал твою таблицу: заголовки ЦЕЛИКОМ (а не только русское наименование) внес бы в заголовки соответсвующих столбцов. Или на некую страницу настроек. Все-таки передавать кириллицу из VBA кода во внешнюю компоненту ИМХО не комильфо 3. Сама процедура. Пишу БЕЗ привязки к твоим переменным и БЕЗ проверки непосредственно в редакторе VBA Опять же предполагаю, что в твоей таблице данные начинаются со второй строки (первая строка - шапка). Также совершенно не представляю, как будет выглядеть заголовок письма для рассылки, это уже сам соображай Сортирую саму таблицу, чтобы с массивами и сортировкой массива не озадачиваться. Если таблицу нужно хранить в неизменном виде - можно эту самую таблицу копировать на новый лист и уже там с ней работать. Никаких тоталов не выводится - только фамилия сотрудника и его затраты. Код: Sub SendManagerReport() Dim MName As String, Body As String ActiveSheet.UsedRange.Sort Key1:=Range("A2"), Header:=xlYes For I = 2 To UsedRange.Cells.xlLastCell.Row If Not Cells(I, 1) = Mname Then SendEMail(txtFromMailID.Text, Cells(I,2) & "@mail.ru", "Some Subject", Body) MName = Cells(I, 1) Body = "" End If For J = 4 To 6 Body = Body & Cells(1,J) & ": " & Cells(I,J) & vbNewLine Next J Next I End Sub | Остальное - уже давай сам Но если что будет не получаться - свисти! |