Добрый день! Знания Excel ограничиваются написанием формул, по VBA пока могу только несложные макросы менять под себя. Поэтом я за советом ибо не нашел готового решения в просторах интернета.
Есть файл "Исходник" в него заносятся раз в квартал несколько (около 10) показателей. Расположение файла, например, на рабочем столе. Есть около 50 файлов ("Карт") со связями и защитой на этот исходный файл. Расположение в подпапках (по ФИО) в общей папке (в обменнике). Защита - без пароля.
В настоящее время заходим в каждый файл, обновляем, закрываем и отправляем на почту.
Возможно ли всю эту процедуру заменить макросом? Например, с кнопкой в Исходном файле обновить данные в 50 файлах и отправить на персонально на почту?
По просьбе автора тема перенесена в ветку Фриланс
Добрый день! Знания Excel ограничиваются написанием формул, по VBA пока могу только несложные макросы менять под себя. Поэтом я за советом ибо не нашел готового решения в просторах интернета.
Есть файл "Исходник" в него заносятся раз в квартал несколько (около 10) показателей. Расположение файла, например, на рабочем столе. Есть около 50 файлов ("Карт") со связями и защитой на этот исходный файл. Расположение в подпапках (по ФИО) в общей папке (в обменнике). Защита - без пароля.
В настоящее время заходим в каждый файл, обновляем, закрываем и отправляем на почту.
Возможно ли всю эту процедуру заменить макросом? Например, с кнопкой в Исходном файле обновить данные в 50 файлах и отправить на персонально на почту?Anis625
Обновить особых проблем нет - можете записать рекордером процесс ручного обновления одного файла, затем добавить в код цикл по списку адресов. А вот про почту - вообще непонятно что хотели.
Обновить особых проблем нет - можете записать рекордером процесс ручного обновления одного файла, затем добавить в код цикл по списку адресов. А вот про почту - вообще непонятно что хотели.Hugo
Возможно ли имея на листе список ФИО (первый столбец), соответствующие им эл.адреса (второй столбец) и соответствующие им адреса (путь) к своим файлам (третий столбец) = отправить с кнопки эти файлы?
Возможно ли имея на листе список ФИО (первый столбец), соответствующие им эл.адреса (второй столбец) и соответствующие им адреса (путь) к своим файлам (третий столбец) = отправить с кнопки эти файлы?Anis625
Возможно ли имея на листе список ФИО (первый столбец), соответствующие им эл.адреса (второй столбец) и соответствующие им адреса (путь) к своим файлам (третий столбец) = отправить с кнопки эти файлы?
Anis625, Отправлять то чем будете (какая-то почтовая программа)?
Возможно ли имея на листе список ФИО (первый столбец), соответствующие им эл.адреса (второй столбец) и соответствующие им адреса (путь) к своим файлам (третий столбец) = отправить с кнопки эти файлы?
Anis625, Отправлять то чем будете (какая-то почтовая программа)?Roman777
Hugo, попробовал еще раз макрокодером записать действия. Запустил запись в файле. Свернул файл. Открыл файл где нужно обновить данные с источником. Обновил данные. Сохранил файл. Закрыл файл. Заканчиваю запись макроса. Посмотрел, что записал: [vba]
Код
Sub Макрос1() ' Макрос1 Макрос ActiveWorkbook.Save ActiveWindow.Close End Sub
[/vba] Он даже не увидел, что я открывал другой файл.
Hugo, попробовал еще раз макрокодером записать действия. Запустил запись в файле. Свернул файл. Открыл файл где нужно обновить данные с источником. Обновил данные. Сохранил файл. Закрыл файл. Заканчиваю запись макроса. Посмотрел, что записал: [vba]
Код
Sub Макрос1() ' Макрос1 Макрос ActiveWorkbook.Save ActiveWindow.Close End Sub
[/vba] Он даже не увидел, что я открывал другой файл.Anis625
Не знаю как Вы делаете, у меня всё записалось: [vba]
Код
Sub Макрос2() ' ' Макрос2 Макрос '
' Workbooks.Open Filename:="C:\Users\Igor\Downloads\1.xlsx", UpdateLinks:=3 ActiveWorkbook.Save ActiveWindow.Close End Sub
[/vba] Можно конечно пооптимизировать, но не суть. Теперь сюда прикручиваем цикл по адресам и готово. P.S. понял почему у Вас так записалось - открывали файл не через меню, а просто кликом по файлу... Ну в общем всё логично и не записалось
Не знаю как Вы делаете, у меня всё записалось: [vba]
Код
Sub Макрос2() ' ' Макрос2 Макрос '
' Workbooks.Open Filename:="C:\Users\Igor\Downloads\1.xlsx", UpdateLinks:=3 ActiveWorkbook.Save ActiveWindow.Close End Sub
[/vba] Можно конечно пооптимизировать, но не суть. Теперь сюда прикручиваем цикл по адресам и готово. P.S. понял почему у Вас так записалось - открывали файл не через меню, а просто кликом по файлу... Ну в общем всё логично и не записалось Hugo
В просторах интернета нашел, на мой взгляд подходящий макрос (немного "подпилил" для себя, не совсем уверен, что правильно): [vba]
Код
Sub Отправить_Письмо_из_Outlook()
'отправляем письмо с 1 вложением Dim coll As New Collection ' заносим в коллекцию список прикрепляемых файлов, путь к файлу - в ячейке D1 coll.Add "Range("d1")" ' адрес получателя - в ячейке A1, текст письма - в ячейке B1, тема письма- в ячейке C1 res = SendEmailUsingOutlook(Cells(1, 1), Range("b1"), Range("c1")) If res Then Debug.Print "Письмо 2 отправлено успешно" Else Debug.Print "Ошибка отправки"
End Sub
[/vba]
Но этот макрос решает вопрос отправки одному человеку. Как его адаптировать на список из нескольких адресатов (примерно 50)? Посмотрите, пожалуйста, макрос на предмет ошибок
В просторах интернета нашел, на мой взгляд подходящий макрос (немного "подпилил" для себя, не совсем уверен, что правильно): [vba]
Код
Sub Отправить_Письмо_из_Outlook()
'отправляем письмо с 1 вложением Dim coll As New Collection ' заносим в коллекцию список прикрепляемых файлов, путь к файлу - в ячейке D1 coll.Add "Range("d1")" ' адрес получателя - в ячейке A1, текст письма - в ячейке B1, тема письма- в ячейке C1 res = SendEmailUsingOutlook(Cells(1, 1), Range("b1"), Range("c1")) If res Then Debug.Print "Письмо 2 отправлено успешно" Else Debug.Print "Ошибка отправки"
End Sub
[/vba]
Но этот макрос решает вопрос отправки одному человеку. Как его адаптировать на список из нескольких адресатов (примерно 50)? Посмотрите, пожалуйста, макрос на предмет ошибокAnis625
1. Про циклы - ну где тут цикл? Почитайте хоть гугл например: https://www.google.ru/search?....e=UTF-8 2. Оутлуком не пользуюсь, да и SendEmailUsingOutlook() у меня нет, поэтому код проверять не буду. Но если изучите п.1, то думаю и это наладите. P.S. если нет многочисленных вложений - то коллекцию создавать нет причины. А если их нет вообще - то и вообще незачем.
Переменную цикла можно приладить в адрес явно вместо числа если используете cells, или с амперсандом если Range: Range("b" & переменная)
1. Про циклы - ну где тут цикл? Почитайте хоть гугл например: https://www.google.ru/search?....e=UTF-8 2. Оутлуком не пользуюсь, да и SendEmailUsingOutlook() у меня нет, поэтому код проверять не буду. Но если изучите п.1, то думаю и это наладите. P.S. если нет многочисленных вложений - то коллекцию создавать нет причины. А если их нет вообще - то и вообще незачем.
Переменную цикла можно приладить в адрес явно вместо числа если используете cells, или с амперсандом если Range: Range("b" & переменная)Hugo