Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Оправка по почте макросом диапазона ячеек, в качестве текста сообщения
 
Прошу прощения - вчера не успел сделать (поздно пришёл, пятница - все таки :) )

Готово, вот код:
Код
Dim adressTo$, fname$, theme$, Disclaimer$
Dim OutApp As Object
Dim OutMail As Object
Dim sh As Worksheet
Dim rng As Range

Set sh = ThisWorkbook.Sheets("Для исполнения")

With Application
    .DisplayAlerts = False
    .EnableEvents = False
    .ScreenUpdating = False
End With

With sh
    .AutoFilterMode = False
    .Range("$A$1:$B$1").AutoFilter Field:=2, Criteria1:="<>"
End With

Set rng = sh.Range("A1").CurrentRegion

With sh
    adressTo = .Range("G2").Value
    theme = .Range("H2").Value
    Disclaimer = .Range("J2").Value
End With

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next

With OutMail
    .To = adressTo
    .cc = ""
    .BCC = ""
    .Subject = theme
    .HTMLBody = "<p style=font-size:10pt;font-family:Calibri;>" & Disclaimer & _
        RangetoHTML(rng)
    .Display 'или Send - чтобы отправить сразу, без предварительного просмотра сформированного сообщения Outlook
End With

Set OutMail = Nothing
Set OutApp = Nothing
sh.AutoFilterMode = False
ThisWorkbook.Save

MsgBox "Письмо успешно сформировано и направлено! ", vbInformation, "Подтверждение отправки сообщения"

With Application
    .EnableEvents = True
    .ScreenUpdating = True
    .DisplayAlerts = True
End With


Теперь по примеру:
1. Будет формироваться всегда 1 сообщение всегда одному получателю, которого мы указываем в диапазоне G2;
2. Если нужна другая логика (1 письмо = 1 строка таблицы, то предлагаю использовать цикл For Each или Do while) - если надо так, то могу сделать;
3. А что собираетесь сохранять в приложение к письму? Это всегда один и тот-же файл или подразумевается возможность выбора? Если вы сталкиваетесь с необходимостью менять приложенный файл, то предлагаю использовать метод GetOpenFIlename.

Пример по П.3 (с маской для файлов Excel):
Код
Fname = Application.GetOpenFilename( _
            FileFilter:="XLS Files (*.xls),*.xls,CSV Files (*.csv),*.csv", _
            Title:="Пожалуйста, выберите файл для вложения", _
            MultiSelect:=True)
Изменено: Astroid1 - 17 Апр 2017 11:27:31
Оправка по почте макросом диапазона ячеек, в качестве текста сообщения
 
Если диапазон не статичен, то предлагаю его цеплять через свойство .UsedRange и кидать в уже обозначенную функцию rangetoHTML.
Если приложите пример сделаю вечером.
Оправка по почте макросом диапазона ячеек, в качестве текста сообщения
 

Я делаю это через функцию rangetoHTML (автор Ron De Bruin).

https://www.rondebruin.nl/win/s1/outlook/bmail2.htm

Т.к. файла-примера нет, то ответ на вопрос: можно, вот так:

Код
*сохраняем диапазон с требуемой информаций в объектную переменную

Dim rnGAttach As Range 'имя объёктной переменной
Set rnGAttach = ThisWorkbook.Worksheets("Ваш лист").Range("B2:B34") 'вместо "ваш лист' укажите имя листа, с которого сохраняется диапазон ячеек в .Body 
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

With OutMail
    .To = ThisWorkbook.Sheets("Sheet2").Range("C1").Value 'Это если адрес получателя статичен / не запрашиваете у пользователя через форму / inbox или указывается непосредственно в книге
    .CC = ""
    .BCC = ""
    .Subject = "This is the Subject line" 'тема письма
    .HTMLBody = RangetoHTML(rnGAttach) 'тело письма. в данном случае это сохранённый нами в объектную переменную диапазон и сконвертированный в html удобоваримый формат
    .Display 'или .Send - чтобы отправить сразу
End With
Изменено: Astroid1 - 14 Апр 2017 11:12:51
Оправка по почте макросом диапазона ячеек, в качестве текста сообщения
 
Вопрос - та область, которая должна попасть в .Body посьма MS Outlook переменная или статичная?
ВПР то работает, то нет, в чем может быть причина?
 
Пример для ВПРинга данных с встречающимися лишними пробелами в элементе поиска и просматриваемом массиве:

=ВПР(СЖПРОБЕЛЫ([@[USER_NM]]);СЖПРОБЕЛЫ('1C-Jan'!$A$2:$D$187);2;ЛОЖЬ)*-1*-1

Вводить как формулу массива и растянуть на весь столбец с данными.
Заголовок в userform с использованием переменной
 
Добрый день

Пример кода (вставляете в модуль пользовательской формы), который отображает в заголовке пользовательской формы (caption) текущую дату и имя пользователя Excel.
Но вы можете легко доработать под свои нужды:
Код
Private Sub UserForm_Initialize()

    sTitle = "Текущая дата: " & Format(Date, "DD MMM YYYY (DDD)") & _
            " Пользователь: " & Environ("username")
        
        Me.Caption = sTitle
Не работает редактор VBA
 
Что значит не работает редактор VB?

Это пробовали:

Файл - > Параметры - > настройка ленты -> флажок активен на строке "Разработчик"
ALT+F11

?
[ Закрыто] Можно ли с ВПРить
 
Можно.
VBA.Начало
 
Если с английским дружите (хотя бы на уровне B1), то советую придерживаться этой стратегии на сайте mrexcel.
Пользы будет в разы больше (просто потому, что ресурс гораздо больше и оживлённее и выбор и спектр вопросов шире - что для вас критично) при аналогичных затратах сил и времени.

Можно ещё смотреть темы в архиве по интересующим нюансам работы в VBA. к примеру пишите в поиске тему, на которой хотели бы набить руку (объединения данных из множества книг, перенос данных из Excel в Word и т.д.) и делаете своё решение попутно сверяясь с уже представленными в архивных темах.

По поводу курсов специалиста.. Если уж есть свободные деньги, время и желание (при абсолютном понимании безальтернативности) - советую посетить курсы, которые ведёт Сергей Ожиганов. Он очень талантливый педагог и хорошо шарит в предметной области.
Изменено: Astroid1 - 28 Фев 2017 11:15:26
Power Query сохранение старых данных при обновлении.
 
Макрос "какой нибудь" у Николая есть в примерах:ссылка

P.S. тема похожа на плохую попытку пропиарить левую группу вконтакте. Чисто субъективное мнение - если человек с такими вопросами предлагает услуги по автоматизации в Excel, то стоит 2 или 3 раза задуматься о получении а уж тем-более об оплате таких услуг.
Изменено: Astroid1 - 28 Фев 2017 13:21:32
UserForm - переход между рабочими книгами, когда данное окно открыто/активно
 
Предлагаю следующее решение (которое потребует создания отдельной кнопки, для закрытия UserForm, при этом, закрытие UserForm через "крестик" будет недоступно").
Код
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
  '     MsgBox "Используйте кнопку 'выйти' чтобы закрыть форму размещения чего-то там."
        Cancel = True
    End If
End Sub

+ добавить кнопку на Userform, которая будет использоваться в качестве кнопки выхода / завершения работы и повесить следующий код на событие "click":
Код
Private Sub CommandButton1_Click() -- ваша кнопка
Unload Me

'ThisWorkbook.Save 'опционально

End Sub
Изменено: Astroid1 - 20 Фев 2017 16:34:59
Как записать несвязанные диапазоны в переменную типа range
 
Вариант (используются несмежные диапазоны для копирования заголовка таблицы - фиксированный диапазон и выбранной строки. Но лучше бы Вы привели пример реальной задачи, для чего хотите использовать запрашиваемые сведения):
Код
Dim rng As Range
Dim rng2 As Range
Dim rngAttach As Range

Set rng = Nothing
Set rng2 = Nothing

    On Error Resume Next
    
Set rng = Sheets("info_list").Range("A4:N4").SpecialCells(xlCellTypeVisible)
Set rng2 = findvalue.EntireRow.Resize(1, 14)
    
    With ThisWorkbook.Worksheets("info_list")
        Set rngAttach = .Range(rng.Address & "," & rng2.Address)
    End With
Изменено: Astroid1 - 7 Фев 2017 11:44:06
UserForm - переход между рабочими книгами, когда данное окно открыто/активно
 
отключите модальный режим окна в свойствах Userform (vbModless = false)
Стоит ли в 38 лет учится программированию?
 
Bema

Подобных тем каждый день создаётся десяток: начинать программировать в 18, 19, 20, 26, 30, 50, 70....?
Что тут обсуждать?
Это какой-то способ морально себя подбодрить?
Или добиться одобрения или поддержки не известных Вам людей, с которыми скорее всего никогда в жизни не встретитесь?)

Поставили цель, отвели срок и вперёд. Главное зацепиться за рабочее место.А если будет переть то, чем занимаетесь, то на кусок хлеба всегда заработаете. Это в любом случае лучше, чем заниматься тем, что Вам не нравится и не приносит удовлетворения по жизни. Для мужика работа это половина жизни (бОльшая половина).
Обидно потом будет - мялись, слушали кого-то на форумах и не попробовали раньше.
Стоит ли в 38 лет учится программированию?
 
Попробуйте начать изучать SQL (это не язык программирования, но он очень пригодится).

Информации открытой в интернете море...
Вот тема, с приведением хороших ссылок на учебные материалы:
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=5&TID=80388&TITLE_SEO=80388-informa...

Полно ресурсов в .com зоне, которые в несложной, игровой манере помогут стартовать.

Советую: https://www.codecademy.com/ и code.org
Если с языком проблемы, то выход есть: смотреть аналогичные школы в .ru зоне. Стоит сказать о тех, кто считает, что университеты, школы и учебники это пустая трата времени. У всех своё мнение - истины в этом вопросе нету, но стоит сказать, что когда у тебя есть наставник, то процесс обучения значительно ускоряется, что особенно актуально для позднего старта.

И да, единственный способ научиться программировать - это программировать.
Поэтому большого толку не ждите от подобных площадок и зубрёжки учебников дома. Надо найти работу, пусть даже самую низкооплачиваемую (опять-таки мы о Вас ничего не знаем, насколько у Вас велика потребность в постоянном доходе, какой бюджет у Вас и т.д.) с самой низкой стартовой позицией.
Изменено: Astroid1 - 16 Янв 2017 18:58:14
Самостоятельно меняется формат ячеек
 
Цитата
Раздвиньте пошире первый столбец
Настройка PLEX. Обучающие видео
 
Николай, коллеги,

Присоединяюсь

1. Это отличная возможность тем кто ещё сомневается стоит ли ему иметь дело с надстройками избавиться от страха и понять, что благодаря им можно сэкономить кучу времени на тратя его на постройку своего велосипеда.
2. Это отличная возможность продвинуть надстройку и показать пользователям "на пальцах" все её достоинства и мощь.
Подскажите учебник по vba
 
JeyCi
Мне кажется нет смысла давать ссылки пользователю-новичку на учебные материалы по языку VB6 и другим VB-образным языкам. Область их приложения и примеры с большой долей вероятности будут далеки от мс-офиса.

Если так мыслить, то можно вообще посоветовать литературу и курсы по C# и C++ (или любым другим, .COM совместимым языкам программирования)... Но это уже излишне.
Подскажите учебник по vba
 
По основам (без опыта программирования на VBA или с минимальным опытом):
VBA и программирование в MS Office для пользователей (Ростислав Михеев)
Самоучитель VBA. Технология создания пользовательских приложений (Андрей Гарнаев)
Разработка приложений на VBA (Андрей Гарнаев, Лада Рудикова)

В качестве справочника и поиска идей (в качестве учебника не подходит):
Excel 2013 / Excel 2010. Профессиональное программирование на VBA (Уокенбах Джон)

***Все четыре книги валяются в сети (можно найти бесплатно - если поискать).

По обучающим курсам советую в УЦ Специалист: "Excel 2016/2013 - уровень 4 Макросы на VBA", Углублённое программирование на VBA". Читают курсы: Завьялов / Ожиганов); Первого лектора можно найти в сети (бесплатно). На второго рекомендую пойти (если живёте в Москве или для Вас допустим формат вебинара).
Изменено: Astroid1 - 25 Авг 2016 19:13:50
Код функции ИЛИ для макроса
 
Справка developer на сайте майкрософт или google.ru
вбейте в запрос "пример использования конструкции "if then"
Изменено: Astroid1 - 25 Авг 2016 12:13:17
Как суммировать время?
 
Конвертируйте pdf, который Вам прислали в excel (как Вы это уже сделали исходя из сообщения №1) и прикрепите файл на 5-10 строк в качестве примера.
Microsoft сертификация по Excel, Где получить сертификат, впечатления от прохождения сертификации
 
1. Наберите в запросе "Учебный центр Специалист При МГТУ имени Баумана".
2. Далее, на сайте, вбейте "Сертификация MICROSOFT OFFICE SPECIALIST" (На эксперта 2 экзамена 77-427 и 77-428).

-Управление и обмен книгами;
-Применение пользовательских форматов и макетов;
-Создание расширенных формул;
-Создание дополнительных диаграмм и таблиц;

3. Для подготовки к экзаменам 77-427 и 77-428 (Mos excel expert) рекомендую использовать книгу Dodge M. MOS 2013 Study Guide. Exams 77-427 & 77-428
Изменено: Astroid1 - 9 Сен 2016 00:42:21
Ищу преподавателя в Санкт-Петербурге (индивидуальные занятия), Мне необходимо свой повысить уровень владения Excel
 
JMLabs, Здравствуйте!

Вы не рассматриваете получение бесплатных консультаций по темам, приведённым в Вашем посте (дистанционно, через Skype, к примеру)?

Поясню, что для меня это отличная возможность актуализировать имеющиеся знания по всем известному принципу в педагогике - если хочешь что-то хорошо и прочно закрепить в своей голове и/или развить навыки преподавания / тренерской деятельности - лучший способ это обучать других.
По крайней мере, вы не потеряете много времени, если после 1 занятия окажется, что я не подойду на эту роль.

Спасибо!
Информация для изучения SQL server, подскажите пожалуйста какие то книги, форумы или все что поможет учить SQL server
 
Вот
Еще рекомендую книгу Мартина Грабера как хороший учебник по SQL для тех, кто изучает «с нуля». Эта книга повсюду лежит в сети. Можно почитать её, например, здесь:·         http://www.sql.ru/docs/sql/u_sql/
Информация для изучения SQL server, подскажите пожалуйста какие то книги, форумы или все что поможет учить SQL server
 
Кстати,
Еще стоит упомянуть о великолепном обучающем ресурсе sql-ex.ru!

Он хорош тем, что представлено множество учебных материалов (главный из которых - учебник) и среда для отработки задач и совершенствования навыков написания запросов на языке SQL (по принципу - от простого к сложному). Т.е. устанавливать на компьютер ничего не требуется - запросы пишутся прямо в форме, на сайте, и тут же показывается результат нашего запроса к БД.
Сертификат (который выдаётся ресурсом, при решении задач пользователями) имеет реальную ценность для работодателей (абсолютно серьёзно).

Но мне показалось, что для тех, кто в глаза SQL не видел и не имеет хоть какого-то мало-мальски опыта написания запросов - начинать с sql-ex не стоит. Ибо сложность задач вырастает слишком уж быстро.

Как уже было сказано выше - лучше обратиться к книге Б. Форта "SQL за 10 минут" и прорешать задачи, приведённые в книге (на схемах БД, доступных к скачиванию с сайта автора) на бесплатной среде MySQL
Изменено: Astroid1 - 2 Авг 2016 18:16:19
Информация для изучения SQL server, подскажите пожалуйста какие то книги, форумы или все что поможет учить SQL server
 
Badamyan
Очень советую посетить (или ознакомиться, в открытом доступе они есть) курсы Самородова Ф.А. (querying sql server 2012), которые он читает в Специалисте.

+ могу посоветовать очень толковую книгу для начинающих:  Бен Форта - "SQL за 10 минут".
А дальше уже смотреть в сторону Джона Селко...
доработка макроса (история изменения ячейки в соседней с ней)
 
Коллеги, всем спасибо
Проблему решил самостоятельно
доработка макроса (история изменения ячейки в соседней с ней)
 
Всем привет

нужна доработка макроса, чтобы он отвечал следующим критериям:
В ячейках в диапазоне F5:F150 указываются даты в формате dd.mm.yy hh:mm.
что нужно:
a) При изменении значения в любой из ячейке указанного диапазона требуется сохранять предыдущее значение (если оно было) в offset 0, 7 cell.
b) Если ячейка (строка) удаляется с рабочего листа, то всю историю изменений в offset 0,7 следует очищать.

Бюджет = 500 руб.

код из примеров, но сохраняет историю изменений в комментарии к ячейке и не обнуляет значение offset 0, 7 после удаления соответствующей ячейки из диапазона F5:F150 или строки, включающей в себя в этот диапазон.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewCellValue$, OldComment$
Dim cell As Range
    
    'если ячейка не в отслеживаемом диапазоне, то выходим
    If Intersect(Target, Range("F5:F150")) Is Nothing Then Exit Sub
    
    'перебираем все ячейки в измененной области
    For Each cell In Intersect(Target, Range("F5:F150"))
    
        If IsEmpty(cell) Then
            NewCellValue = "Ячейка очищена" 'фиксируем очистку ячейки
        Else
            NewCellValue = Format(cell, "dd.mm.yyyy hh:mm")     'или ее содержимое
        End If
        On Error Resume Next
        
        With cell.Offset(rowOffset:=0, columnOffset:=7)


            OldComment = .Comment.Text & Chr(10)
            .Comment.Delete     'удаляем старое примечание (если было)
            .AddComment         'добавляем новое и вводим в него текст
            .Comment.Text Text:=OldComment & Application.UserName & " " & _
                            Format(Now, "dd.mm.yyyy hh:mm") & " : " & NewCellValue
            .Comment.Shape.TextFrame.AutoSize = True    'делаем автоподбор размера
            .Comment.Shape.TextFrame.Characters.Font.Size = 8
        End With
    Next cell
    
End Sub
Изменено: Astroid1 - 14 Июл 2016 10:01:53
Расчет времени, необходимого для работы с клиентами
 
Пример конечно запутанный.
Таблица №1 c ваших слов, это та таблица, которая расположена в диапазоне "K2:AP38"?
Время на дорогу к клиенту это J44:J66 или J44:J77?
И куда суммировать должно в какой диапазон?
Подсчет товара и поддонов
 
Вот пример в приложении - логика такая?
Изменено: Astroid1 - 11 Июл 2016 19:45:35
Страницы: 1 2 След.
Наверх