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

Страницы: 1 2 3 4 5 След.
Манипуляция с вложениями при массовой рассылке писем (Outlook)
 
Я применил это, так сказать, на беловике, всё работает, как и хотелось.
В рабочей версии изменил диапазон, добавил массивы для CC и массивы с текстом.
Не хватит слов, чтобы выразить благодарность. Спасибо большое, пусть Вам сопутствует успех. Мне неловко, что Вам пришлось писать за меня код, и очень жаль, что самому не хватило ума.
Манипуляция с вложениями при массовой рассылке писем (Outlook)
 
Так. Честно говоря, не улавливаю сути :(

По Вашему примеру, получается, что мы делаем:

Если ключ уже существует, то мы присваиваем ключу трехмерный массив, который содержит в себе адресат, тему письма и массив прикрепляемых документов;
А вот в случае "иначе" - я не совсем понял.

Вот что у меня получилось на данный момент:
Скрытый текст

Это все промежуточное, просто хотелось понять, как работает словарь. В данном случае он не выдает ошибки, так как если встречается дубликат, то он остается, а предыдущий стирается.

Я хотел бы уточнить, поправьте меня, пожалуйста, если я не прав. Для того, чтобы отправлять письма так, как нужно мне, необходимо написать код по следующим шагам:

1. Создать словарь (словарь состоит из ключей и элементов в нем);
2. Обозначить диапазон, из которого будут формироваться ключи и элементы для словаря (в моем случае это "галочки" в столбце B):
3. Объявить по каждой галочке ключ, допустим, sKey, который состоит из Value sEmail (адресат) и sTheme (тема письма);
4. Предотвратить ошибку при совпадении ключей;
5. Добавить к каждому ключу массив элементов (элементы это название документа(-ов), которые мне необходимо прикрепить).
6. Словарь таким образом сформируется;
7. По каждому ключу словаря создать письмо.
Манипуляция с вложениями при массовой рассылке писем (Outlook)
 
Простите за поздний ответ, пытался разобраться своими силами. До Вашего ответа я про словари не знал, сейчас почитал про них; насколько понял, 1 ключ = 1 элемент, к тому же каждый ключ уникален, тогда как это может помочь в текущей ситуации, можете подробней рассказать?

Ниже просто рассуждения вслух. Необходимо, чтобы если в выборке по галочкам ячейка столбца Contact Person одной строки совпадал с ячейкой столбца Contact Person в другой строке и при этом еще совпадали темы письма (названия проектов), макрос бы создал письмо по данным, которые увидит раньше, и залил бы туда уже два аттачмента, номера которых будут указаны. Если темы строк совпадают, но адресаты не совпадают - разные письма с аттачментом в каждом. Если совпадают адресаты, но не совпадают темы - аналогично.

И как же тут правильно применить словарь? Ведь если сделать ключом тему письма, то рано или поздно попадется дубликат, и непременно вылезет ошибка.  
Манипуляция с вложениями при массовой рассылке писем (Outlook)
 
Я апну, никто не против?
Манипуляция с вложениями при массовой рассылке писем (Outlook)
 
Коллеги, добрый день еще раз,


Предыстория, так, на всякий.
Имеется умная таблица, с данными для формирования писем в Outlook по галочке. Галочка служит индикатором для заполнения форм "Кому"; "Копии"; "Тема" - по каждой галочке создается письмо и все на данный момент ОК.

Хочу добавить следующее:

В файле-примере есть столбец Документы. В реальной рабочей книге там номера; эти номера уникальные, повторяющихся нет. На данный момент 1 строка = 1 номер. Так же, в этом столбце не должно быть пропусков (если только не ошибка).

В принципе, я догадываюсь, как подтягивать по имени (т.е. номеру) документа аналогично названный pdf файл из специально созданной для этого папки (важно: в макросе, который в примере, я это еще не дописал). Но дело в том, что на данный момент я знаю, как создать письмо для каждого уникального номера; т.е. 80 номеров - 80 писем и 80 файлов в нем, и т.д.. Но это не совсем корректно. Нужно, чтобы учитывалось следующее. Если для разных документов (их номеров) соответствуют одинаковый адресат (т.е. "кому") и одинаковое описание проекта (т.е. "тема"), то логично, что не нужно создавать отдельное письмо для каждого пдф, а создать одно письмо и залить туда все соответствующие документы.

И вот мой вопрос в том, как это сделать  :)

Получилось очень длинное объяснение, наверное, можно было короче объяснить.

Буду очень благодарен за совет и помощь.

Пример в приложении.
Корректировка макроса для рассылки писем (Outlook)
 
Wiss, нет, Вы правы; так или иначе, способ с отступами когда-нибудь понадобится, а я про него и не догадался.

JayBhagavan, Вам тоже спасибо за ответ, в целом, понял Вашу мысль, будем пробовать.

Сейчас пойду создавать еще одну тему.
Корректировка макроса для рассылки писем (Outlook)
 
Wiss, спасибо за ответ.

Я попробовал, с помощью offset хорошо.
Правда, есть нюансы. По поводу формы: я не знаю, как без ВПР и условия вставить текст так, чтобы учитывались все нюансы. Это, наверное, отдельную тему надо создавать.

Дело в том, что текст планирую менять не только в зависимости от имени отправителя. Да, он в целом будет стандартный, но по определенным критериям в одних письмах будет указываться, ну допустим, курс евро на первое число месяца, а в других нет. С помощью формы, впр и ЕСЛИ в Экселе у меня легко получается это учесть, а вот как сделать так, чтобы VBA это понял при создании писем я пока не знаю.

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

Имеется умная таблица с базой данных, и эта таблица предназначена для массовой рассылки писем в Outlook.

То есть, имеется информация:
1. Кому отправить письмо;
2. Кого поставить в копию;
3. Как назвать тему письма,
4. Прочие нюансы.

С помощью нехитрых манипуляций с ВПР на том же листе есть формочка, которая подтягивает необходимые данные по индикатору "a" (латинская раскладка) из первого столбца (в примере это наглядно видно).

Далее; на текущий момент имеется такой вот код:

Скрытый текст

Что хотел сделать:

1. Проставить индикаторы (далее - галочки) по тем строкам в умной таблице, по которым необходимо отправить письма;
2. Запустить этот макрос, который создает письма и заполняет информацию в каждое созданное письмо из этой ранее упомянутой формы; создав первое письмо и вставив туда информацию, верхний индикатор стирается; далее создается следующее письмо.
3. Посчитать количество созданных писем.

В чем проблема:

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

Подскажите, пожалуйста, как устранить дефект? (Также буду очень благодарен за любые замечания по структуре кода и любым полезным советам по данному вопросу, может быть я пытаюсь почесать правое ухо левой рукой и уже есть способы автоматически отправлять письма попроще).

Пример в приложении.

Спасибо.
Изменено: Framed - 16 Ноя 2018 15:34:52
PQ: Преобразование нескольких столбцов в один диапазон
 
Спасибо. А если отсортировать нет возможности?
PQ: Преобразование нескольких столбцов в один диапазон
 
Коллеги, добрый день,

Подскажите, пожалуйста, как преобразовать таблицу в диапазон именно в PQ? На всякий случай, приложил пример, "что есть" и "что надо".

Простите, если такие темы уже были, но я не нашёл.

Спасибо заранее.
PQ: Удаление дубликатов по условию
 
Цитата
PooHkrd написал:
Вот ежели шаг с сортировкой загнать в Table.Buffer тогда должно сработать.
Благодарю, действительно, теперь сработало.
Господа, остальное не стал пробовать, но обязательно сделаю это в ближайшее время; спасибо и вам за обсуждение.

Хорошего дня.
VBA: Результаты макроса только для видимых (нескрытых фильтром) строк/ячеек
 
Спасибо, сейчас попробую.
VBA: Результаты макроса только для видимых (нескрытых фильтром) строк/ячеек
 
Коллеги, добрый день,

Все-таки не осилил сам, подскажите, пожалуйста. Еще в этой теме хотел разобраться, как сделать так, чтобы макрос работал только для видимых ячеек столбца. Макрос ставит галочки в столбце A, если "таргетнуть" ячейку или выделить ячейки только этого столбца; проблема в том, что если выделить ряд ячеек и среди них будут скрытые, то галочка "упадет" и туда тоже. Вот код самого макроса:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'    If Target.Cells.Count > 1 Then Exit Sub
    Dim rngTarget As Range, cl As Range
    
    r = Cells(Rows.Count, 2).End(xlUp).Row
    Set rngTarget = Intersect(Target, Range("A2:A" & r))
    If Not rngTarget Is Nothing And _
        Target.Columns.CountLarge = 1 Then
        
        
        Application.EnableEvents = False
        Target.Font.Name = "Marlett"
        For Each cl In rngTarget
            If cl = vbNullString Then
                cl = "a"
            Else
                cl = vbNullString
            End If
        Next cl
        Application.EnableEvents = True
    End If
End Sub

'Снимаем флажок после двойного клика
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    r = Cells(Rows.Count, 2).End(xlUp).Row
    If Not Intersect(Target, Range("A2:A" & r)) Is Nothing Then
        Cancel = True 'Чтобы не уйти в режим редактирования
        Target.Font.Name = "Marlett"
            If Target = vbNullString Then
                Target = "a"
            Else
                Target = vbNullString
            End If
    End If
End Sub
Что пытался сам:
Объявить i, и создать цикл For i = 1 to r step 1, в котором есть условие If Rows(i).Hidden = False, но в итоге ничего не получилось. Пример прикладываю (без своих творений).

Спасибо заранее.
Изменено: Framed - 6 Ноя 2018 12:08:52 (Изначально было i=5, это потому что первая строка моей таблицы начинается с C5.)
Финансовый формат ячейки в VBA
 
Нет, не кажется, я же написал:
Значок рубля уходит за число. Обычно значок рубля после числа стоит.
PQ: Удаление дубликатов по условию
 
Попробую сейчас. Сортировка и впрямь не помогала.
Финансовый формат ячейки в VBA
 
Коллеги, и снова добрый день,

Подскажите, пожалуйста, как корректно ввести финансовый формат ячейки в VBA? Мне нужно, чтобы определенные значения (т.е. поля значений) сводной таблицы были в формате рубля, с двумя знаками после запятой.

Макрорекодер выдал: "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"

Вставил в свой макрос, но в итоге на выходе значок уходит за число:



Как исправить?

Спасибо.
Разделение массива данных на разные файлы по критерию и созданию на их основе сводной таблицы, объединение двух макросов в один
 
Благодарю, совсем об этом не подумал.
Разделение массива данных на разные файлы по критерию и созданию на их основе сводной таблицы, объединение двух макросов в один
 
Коллеги, добрый день,

Имеется выгрузка данных проектов (их число может быть разное). Выглядит она так же, как и в файле "Пример базы данных", который я прикладываю. Макрос ниже позволяет разбить этот массив данных по отдельным книгам и сохранить в определенном месте (критерий -- названия проектов в столбце А):
Скрытый текст

Далее, я использую макрос для создания сводной таблицы для каждой вновь созданной книги. То есть захожу в каждую, использую макрос, сохраняю, закрываю. Макрос выглядит так:

Скрытый текст

Подскажите, пожалуйста, как корректно объединить их в один макрос? То есть, мне нужно, чтобы сначала выполнялся макрос разделения массива, затем макрос создания сводной таблицы и только потом это все сохранялось в отдельную книгу = > следующий проект.

Исходные данные и результаты работы каждого макроса прикладываю.

Спасибо заранее.
Изменено: Framed - 5 Ноя 2018 17:29:05
Ошибка при создании сводной таблицы с помощью макроса
 
Коллеги, добрый день,

Подскажите, пожалуйста, почему при запуске макроса система выдает ошибку Run-time error '5': Invalide procedure call or argument?

Пример прикладываю.
Спасибо заранее.
PQ: Удаление дубликатов по условию
 
Добрый день, коллеги,

Не буду (пока что) прикладывать пример, считаю, что вопрос того не стоит. А он в следующем: можно ли при редактировании запроса PQ управлять условием удаления дубликатов? К примеру, у меня есть две строки, и, при прочих равных, Start Date у одной раньше, чем у другой. При нажатии "Удалить дубликаты" остается та, у которой Start Date позже. А мне необходимо наоборот, не понимаю, как это отрегулировать.

Спасибо заранее.
Изменено: Framed - 4 Ноя 2018 17:29:53
Эксель не видит личную книгу макросов
 
Коллеги, добрый день,

Тут полчаса назад Эксель завис, пришлось снимать процесс. Теперь автоматически не запускается личная книга макросов или что-то вроде этого. Записать макрос в личную книгу тоже не получается:
Скрытый текст

Изменить тоже, сообщение "Изменить макрос в скрытой книге невозможно. Закройте все документы и выберите команду "ПОКАЗАТЬ" в меню "ФАЙЛ"".
Сам файл личной книги макросов я нашел, лежит там, где надо. Не скрытый.

Пробовал, как здесь: не получилось.
Офис 365.

Есть варианты, как исправить?
Спасибо заранее.
Изменено: Framed - 2 Ноя 2018 00:17:45
VBA: Печать заполненной по галочкам форме
 
Хорошо, прошу прощения, спасибо еще раз за помощь.
VBA: Печать заполненной по галочкам форме
 
Благодарю. Последний вопрос, не самый важный, но все-таки: возможно ли сделать так, чтобы галочки ставились лишь в отфильтрованные ячейки? То есть, если я отфлитрую и выделю видимый массив ячеек, то галочки все равно появятся в тех, что скрыты фильтром.
VBA: Печать заполненной по галочкам форме
 
Внёс код в свой файл, в котором умная таблица начинается с С4, с соответствующими поправками. Отправил на печать, работает.

Единственный момент - случайно выделил весь столбец С, и эксель умер  :) , т.к. строк >5к. Может стоит в таком случае ввести что-то вроде MsgBox ("Вы точно хотите отправить на печать все данные? vbYesNo+vbQuestion), и в случае нет, end Sub?
VBA: Печать заполненной по галочкам форме
 
Спасибо, сейчас пойду проверять.

Пожалуйста, если не затруднит: r должно быть >1 потому что r = 1 только если столбец с галочками пустой?
VBA: Печать заполненной по галочкам форме
 
Что-то вроде этого? Только здесь пока еще нет команды для печати.
Код
Sub Proverka()    
    Dim Cell As Range
    Dim r As String
    r = Cells(Rows.Count, 2).End(xlUp).Row
    Application.EnableEvents = False
        For Each Cell In Range("A2:A" & r)
            If Cell.Value = "a" Then
                Cell.Value = ""
            End If
        Next Cell
    Application.EnableEvents = True
End Sub
Изменено: Framed - 29 Окт 2018 02:09:16
VBA: Печать заполненной по галочкам форме
 
Ок, благодарю. Сейчас попробую сообразить.
VBA: Печать заполненной по галочкам форме
 
Коллеги, добрый вечер,

Имеется файл с базой данных и печатная для этих данных форма. Благодаря этому приему и его небольшому апгрейду печатать стало намного проще и удобнее (раньше было принято создавать для каждой отдельной единицы данных Word файл), спасибо авторам. Но дело в том, что количество необходимых распечаток уже превышает сотню, в связи с чем возникает вопрос: как корректно изменить макрос так, чтобы можно было:

1. Сразу отметить все необходимые для печати строки галочкой;
2. Пустить на печать поочередно, начиная с первой галочки сверху печатную форму с соответствующими каждой галочке данными.

Я понимаю принцип работы приема, он основан на ВПР; в примере, который я выкладываю, галочка = a, и печатная форма подтягивает данные по этому символу, следовательно, если одинаковых символов будет несколько, то следующие строки с данными туда уже не попадают. Но может быть это можно решить с помощью VBA?

Прикладываю файл-пример от Sanja, т.к. пользуюсь точно таким же макросом, просто с другими данными и другой печатной формой.

P.S. Как помечать в столбце A несколько галочек, а не одну, я уже понял, надо лишь удалить из макроса
Код
Range("A2:A" & r).ClearContents
А вот дальше застрял.

Заранее спасибо.
PQ: Разделение данных по запятой в ячейке на несколько строк с частичным сохранением данных
 
Спасибо за разъяснения, теперь все понятно.

Хорошего Вам дня.
PQ: Разделение данных по запятой в ячейке на несколько строк с частичным сохранением данных
 
Александр, спасибо Вам.

Я не то чтобы не полностью изучил - мне не совсем понятен смысл:

1. Замены запятых на точки с запятыми;
2. Почему мы объединяем Total с Invoice в строке с кодом List.Zip
Страницы: 1 2 3 4 5 След.
Наверх