Здравствуйте! В приложенном файле на листе «Рабочий» все ячейки окрашенные желтым цветом будут защищены, а белые ячейки для написания оперативной информации. Как сделать так, чтобы при нажатии кнопки «Обновить»(зеленые) информация с белых ячеек напротив этой кнопки, уходила на электронную почту нескольким адресатам.
Здравствуйте! В приложенном файле на листе «Рабочий» все ячейки окрашенные желтым цветом будут защищены, а белые ячейки для написания оперативной информации. Как сделать так, чтобы при нажатии кнопки «Обновить»(зеленые) информация с белых ячеек напротив этой кнопки, уходила на электронную почту нескольким адресатам.Palladium
В графе 2 (задержания): все белые ячейки строки через / или //, а можно чтобы каждая ячейка была в скобках (.......)(......)... Количество а/м: "за текущий месяц" и "за сутки" можно кнопку объеденить, чтобы за эти две строки отвечала одна кнопка. В графе 3 (событие) и в графе 4 (структуры) все как в графе 2.
В графе 2 (задержания): все белые ячейки строки через / или //, а можно чтобы каждая ячейка была в скобках (.......)(......)... Количество а/м: "за текущий месяц" и "за сутки" можно кнопку объеденить, чтобы за эти две строки отвечала одна кнопка. В графе 3 (событие) и в графе 4 (структуры) все как в графе 2.Palladium
Сообщение отредактировал Palladium - Понедельник, 16.11.2015, 17:45
Работает следующим образом: - в ячейке Е1 адреса e-mail. Вводить через запятую. Если место не удобное, нарисуйте где удобно - я исправлю в макросе. - перед нажатием ЛЮБОЙ кнопки "Обновить" станьте на нужную строку. - пока что сделал чтоб письмо открывалось с предпросмотром, где останется нажать Отправить. Можно сделать чтоб письмо улетало без предпросмотра.
Тема письма берется из названия Графы
Palladium, Протестируйте, скажите что поправить.
Работает следующим образом: - в ячейке Е1 адреса e-mail. Вводить через запятую. Если место не удобное, нарисуйте где удобно - я исправлю в макросе. - перед нажатием ЛЮБОЙ кнопки "Обновить" станьте на нужную строку. - пока что сделал чтоб письмо открывалось с предпросмотром, где останется нажать Отправить. Можно сделать чтоб письмо улетало без предпросмотра.
Я имел ввиду, чтобы эта кнопка копировала на другой лист всю таблицу, но пока пусть так все остается. Завтра посмотрю, дома Outlook не настраивал. Спасибо!!!
Я имел ввиду, чтобы эта кнопка копировала на другой лист всю таблицу, но пока пусть так все остается. Завтра посмотрю, дома Outlook не настраивал. Спасибо!!!Palladium
Сообщение отредактировал Palladium - Понедельник, 16.11.2015, 19:08
Нет. "Рабочий" лист - это тот который заполняется 2 раза в сутки и его по окончанию смены нужно копировать на другой лист и после очистить для следующей смены. А лучше глянь вот ссылка на тему о кнопке "Сохранить" там вопрос в принципе решен.[offtop]Как теперь совместитьте макросы те и эти буду думать позже.
Нет. "Рабочий" лист - это тот который заполняется 2 раза в сутки и его по окончанию смены нужно копировать на другой лист и после очистить для следующей смены. А лучше глянь вот ссылка на тему о кнопке "Сохранить" там вопрос в принципе решен.[offtop]Как теперь совместитьте макросы те и эти буду думать позже.Palladium
Сообщение отредактировал Palladium - Понедельник, 16.11.2015, 20:08
Все просто замечательно. Как раз то что хотел. Я оставил одну кнопку "Отправить" и вынес ее на первую строку к тем двум кнопкам, она одна отправляет со всех граф. Я еще в макросе заменил запятую после адреса на точку-запятой (почему то ругался Outlook). Можно сказать : вопрос решен!!! Спасибо!!! [offtop]Если будет тема по этой же таблице, но с продолжением, можно будет обратить Ваше внимание на тему личным сообщением? Спасибо!!!
Все просто замечательно. Как раз то что хотел. Я оставил одну кнопку "Отправить" и вынес ее на первую строку к тем двум кнопкам, она одна отправляет со всех граф. Я еще в макросе заменил запятую после адреса на точку-запятой (почему то ругался Outlook). Можно сказать : вопрос решен!!! Спасибо!!! [offtop]Если будет тема по этой же таблице, но с продолжением, можно будет обратить Ваше внимание на тему личным сообщением? Спасибо!!!Palladium
Сообщение отредактировал Palladium - Вторник, 17.11.2015, 22:14
Я в макросе подправил, чтобы брало в сообщение больше ячеек одной строки - таблицу увеличил. А вот как подправить там где за месяц и за сутки количество а/м, не могу сообразить. Я на работе и с телефона могу только в текстовом файле загрузить макрос. Эти две ячейки объединены, пусть так и будет. Но добавил новые столбцы. Если раньше были CDE, то сейчас CDEFGH. Подскажите, пожалуйста, что заменить нужно. Файл прикладываю. P/S: Уже дома, поэтому могу показать макрос [vba]
Код
Sub Отправить_письмо() Dim OutApp As Object Dim OutMail As Object Dim cell As Range
IRange = ActiveCell.Row 'текущая строка For ii = 1 To 20 If ii = 1 Then iTo = Range("V4").Value 'кому Else iTo = iTo + "; " + Range("V" & 3 + ii).Value 'кому End If If Range("V" & 3 + ii).Value = "" Then Exit For Next ii Select Case Range("A" & IRange).MergeArea.Cells(1, 1).Value Case 2 'второй ранг If Range("B" & IRange).MergeArea.Cells(1, 1).Value = "Количество а/м" Then iSubject = Range("B" & IRange).MergeArea.Cells(1, 1).Value ' тема сообщения Select Case Range("E" & IRange).Value Case "За текущий месяц": i = 1 Case "За сутки": i = -1 End Select iBody = Range("E" & IRange).Value & " : " & Range("C" & IRange).Value & " / " & _ Range("D" & IRange).Value & Chr(10) & Range("E" & IRange + i).Value & " : " & _ Range("C" & IRange + i).Value & " / " & Range("D" & IRange + i).Value ' текст сообщения Else iSubject = Range("B" & IRange).MergeArea.Cells(1, 1).Value ' тема сообщения iBody = Range("C" & IRange).Value & " / " & Range("D" & IRange).Value & " / " & _ Range("E" & IRange).Value & " / " & Range("F" & IRange).Value & " / " & _ Range("G" & IRange).Value & " / " & Range("H" & IRange).Value ' текст сообщения End If Case 3 'третий ранг iSubject = Range("B" & IRange).MergeArea.Cells(1, 1).Value ' тема сообщения iBody = Range("C" & IRange).Value & " / " & Range("D" & IRange).Value & " / " & _ Range("E" & IRange).Value & " / " & Range("F" & IRange).Value & " / " & _ Range("G" & IRange).Value & " / " & Range("H" & IRange).Value ' текст сообщения Case 4 ' соответственно 4 ранг iSubject = Range("B" & IRange).MergeArea.Cells(1, 1).Value ' тема сообщения iBody = Range("C" & IRange).Value & " / " & Range("D" & IRange).Value & " / " & _ Range("E" & IRange).Value & " / " & Range("F" & IRange).Value & " / " & _ Range("G" & IRange).Value & " / " & Range("H" & IRange).Value ' текст сообщения End Select
Application.ScreenUpdating = False Set OutApp = CreateObject("Outlook.Application") 'запускаем Outlook в скрытом режиме OutApp.Session.Logon On Error GoTo cleanup 'если не запустился - выходим Set OutMail = OutApp.CreateItem(0) 'создаем новое сообщение On Error Resume Next 'заполняем поля сообщения With OutMail .to = iTo 'кому .Subject = iSubject ' тема сообщения .Body = iBody ' текст сообщения '.Attachments.Add Range("A1").Value 'вложения, если когда-то понадобится .Display 'команда Send - отправить без предпросмотра письма или Display - чтобы посмотреть сообщение перед отправкой End With
On Error GoTo 0 Set OutMail = Nothing
cleanup: Set OutApp = Nothing Application.ScreenUpdating = True End Sub
Я в макросе подправил, чтобы брало в сообщение больше ячеек одной строки - таблицу увеличил. А вот как подправить там где за месяц и за сутки количество а/м, не могу сообразить. Я на работе и с телефона могу только в текстовом файле загрузить макрос. Эти две ячейки объединены, пусть так и будет. Но добавил новые столбцы. Если раньше были CDE, то сейчас CDEFGH. Подскажите, пожалуйста, что заменить нужно. Файл прикладываю. P/S: Уже дома, поэтому могу показать макрос [vba]
Код
Sub Отправить_письмо() Dim OutApp As Object Dim OutMail As Object Dim cell As Range
IRange = ActiveCell.Row 'текущая строка For ii = 1 To 20 If ii = 1 Then iTo = Range("V4").Value 'кому Else iTo = iTo + "; " + Range("V" & 3 + ii).Value 'кому End If If Range("V" & 3 + ii).Value = "" Then Exit For Next ii Select Case Range("A" & IRange).MergeArea.Cells(1, 1).Value Case 2 'второй ранг If Range("B" & IRange).MergeArea.Cells(1, 1).Value = "Количество а/м" Then iSubject = Range("B" & IRange).MergeArea.Cells(1, 1).Value ' тема сообщения Select Case Range("E" & IRange).Value Case "За текущий месяц": i = 1 Case "За сутки": i = -1 End Select iBody = Range("E" & IRange).Value & " : " & Range("C" & IRange).Value & " / " & _ Range("D" & IRange).Value & Chr(10) & Range("E" & IRange + i).Value & " : " & _ Range("C" & IRange + i).Value & " / " & Range("D" & IRange + i).Value ' текст сообщения Else iSubject = Range("B" & IRange).MergeArea.Cells(1, 1).Value ' тема сообщения iBody = Range("C" & IRange).Value & " / " & Range("D" & IRange).Value & " / " & _ Range("E" & IRange).Value & " / " & Range("F" & IRange).Value & " / " & _ Range("G" & IRange).Value & " / " & Range("H" & IRange).Value ' текст сообщения End If Case 3 'третий ранг iSubject = Range("B" & IRange).MergeArea.Cells(1, 1).Value ' тема сообщения iBody = Range("C" & IRange).Value & " / " & Range("D" & IRange).Value & " / " & _ Range("E" & IRange).Value & " / " & Range("F" & IRange).Value & " / " & _ Range("G" & IRange).Value & " / " & Range("H" & IRange).Value ' текст сообщения Case 4 ' соответственно 4 ранг iSubject = Range("B" & IRange).MergeArea.Cells(1, 1).Value ' тема сообщения iBody = Range("C" & IRange).Value & " / " & Range("D" & IRange).Value & " / " & _ Range("E" & IRange).Value & " / " & Range("F" & IRange).Value & " / " & _ Range("G" & IRange).Value & " / " & Range("H" & IRange).Value ' текст сообщения End Select
Application.ScreenUpdating = False Set OutApp = CreateObject("Outlook.Application") 'запускаем Outlook в скрытом режиме OutApp.Session.Logon On Error GoTo cleanup 'если не запустился - выходим Set OutMail = OutApp.CreateItem(0) 'создаем новое сообщение On Error Resume Next 'заполняем поля сообщения With OutMail .to = iTo 'кому .Subject = iSubject ' тема сообщения .Body = iBody ' текст сообщения '.Attachments.Add Range("A1").Value 'вложения, если когда-то понадобится .Display 'команда Send - отправить без предпросмотра письма или Display - чтобы посмотреть сообщение перед отправкой End With
On Error GoTo 0 Set OutMail = Nothing
cleanup: Set OutApp = Nothing Application.ScreenUpdating = True End Sub
[/vba] Скорректируйте в первом случае iBody в куске выше. Смысл такой (на память пишу) столбик Е (за сутки например) двоеточие и далее столбы С иD раделенные слешем. После Chr(10) идет обработка другой строки (за месяц допустим). Добавте перед Chr(10) вот такое & Range("C" & IRange).Value & " / " только с новыми столбцами. А послеChr(10) вот такоеRange("C" & IRange + i).Value & " / " с новыми столбцами.
Вечер добрый. Я с телефона , попробую так ответить. [vba]
[/vba] Скорректируйте в первом случае iBody в куске выше. Смысл такой (на память пишу) столбик Е (за сутки например) двоеточие и далее столбы С иD раделенные слешем. После Chr(10) идет обработка другой строки (за месяц допустим). Добавте перед Chr(10) вот такое & Range("C" & IRange).Value & " / " только с новыми столбцами. А послеChr(10) вот такоеRange("C" & IRange + i).Value & " / " с новыми столбцами.devilkurs
Сообщение отредактировал devilkurs - Вторник, 17.11.2015, 22:43