Страницы: 1
RSS
Автоматическая отправка файла по почте в заданное время
 
Здравствуйте уважаемые форумчане, подскажите пожалуйста существует ли какое то решение отправки файла эксель формат .csv на почтовый адрес автоматически по заданному времени, задача следующая: У меня есть файл csv мне нужно чтобы он отправлялся на почтовый ящик который укажу по времени автоматически тоесть когда я буду отсутствовать возле компьютера! Макросы есть которые отправляют при закрытии книги и т.д., но это надо заходить и делать действия, а нужно решение чтобы отправлялось когда я отсутствую, файл на выходе должен быть csv либо xlsx, но не xlm
 
Ехсеl должен быть открыт и макрос запущен. Макрос будет работать все время.

Цитата
Артём Москвитин написал: файл на выходе должен быть csv либо xlsx, но не xlm
Т.е. файла еще нет и его нужно создавать? Это уже другой вопрос.
 
Можно еще через vbs скрипт
 
Тут основной вопрос, посредством какой программы отправлять.
Спасибо
 
В эксель как я понимаю файл должен быть всегда открыт и запускается макрос, этот вариант не очень подходит мне, может программа какая то существует для этого?
 
Почитайте здесь: https://www.planetaexcel.ru/techniques/3/6638/
Мне когда-то помогло справиться с похожей задачай как у Вас.
А для почтового клиента смотрите смотрите код Щербакова Дмитрия в примере.
- Создаёте скрипт запуска макроса и Всё!
Компьютер только должен быть включен.
Вы гуляете, а почта исправно отправляется. :D  
 
Цитата
написал:
Компьютер только должен быть включен.Вы гуляете, а почта исправно отправляется.
Я использовал такой скрипт запуска из Windows.
 
Артём Москвитин,
как идея, попробуйте подумать в направлении использования Google Sheets для этой задачи. Там всё будет отправляться и при выключенном компьютере. Хотя понимаю, что вы чётко определили "файл эксель формат .csv" и моё предложение вам не подходит. Это первое пришло в голову, и, наверно, к вашему вопросу не имеет отношения.  
Изменено: Olga H. - 24.01.2022 22:27:53
 
Есть ведь планировщик в системе, навесить на него выполнение скрипта vbs как выше подсказали.
 
Артём Москвитин
Цитата
В эксель как я понимаю файл должен быть всегда открыт и запускается макрос
Файл не обязательно должен быть открыт Есть метод Ontime здесь  который может запустить любой макрос в заданное время, но сам эксель должен быть запущен в это время те реально эксель закрывать тогда нельзя, чтобы макрос отработал в заданное время.

Коллеги давайте будем грамотно писать Файл с расширением csv это не экселевский файл, а текстовый с разделителями запятая, что легко проверить открыв его в любом текстовом редакторе. Из того , что эксель открывает этот формат файлов не следует, что это экселевский файл.

Самое оптимальное решение предложил Hugo Зачем держать эксель запущенным, чтобы выполнился какой–то макрос К тому программный код на VBscript и VBA будут очень похожи.
 
Цитата
написал:
Самое оптимальное решение предложил Hugo Зачем держать эксель запущенным, чтобы выполнился какой–то макрос К тому программный код на VBscript и VBA будут очень похожи.
Действительно запуск скрипта через планировщик было бы идеальным решением, чтобы не держать файл открытым, может кто поделится готовым скриптом, PITBY отправил скрипт vbs запуска через windows, но он как я понимаю активирует макрос в книге, это обязательное условие чтобы был макрос в файле?
Код
Option Explicit
Dim xlApp, xlBook, iPath

Set xlApp = CreateObject("Excel.Application") 
xlApp.DisplayAlerts = False 
xlApp.Visible = False 'True
iPath = "C:\Users\moscv\OneDrive\Рабочий стол\Фото мои остатки на павильоне\Мои остатки на павильоне!!!.csv" ' Путь к файлу с макросом
Set xlBook = xlApp.Workbooks.Open(iPath, 0, False)

xlApp.Run "Создание_файлов"   'запускаем макрос из открытой книги
xlBook.Close True             'закрываем книгу с сохранением
xlApp.Quit                    'закрываем Excel

Set xlBook = Nothing
Set xlApp = Nothing

'WScript.Echo "Завершено удачно!"
WScript.Quit
 
1. Создаем Excel файл с макросом, который отправляет файл по почте. Можно через Outlook, можно через CDO (без почтовых программ)
очень подробно описано у Дмитрия
https://www.excel-vba.ru/chto-umeet-excel/kak-otpravit-pismo-iz-excel/
Если через Outlook, добавьте в реестр данные, чтобы убрать оповещение
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=113155&a...

2. Создаем VBS файл, указываем путь, название макроса, название файла
Код
Call Run_macros

'запуск макроса'
Sub Run_macros()
   'запускаем Excel
   set objExcel = CreateObject ("Excel.Application")
   objExcel.Visible = True   
   objExcel.Workbooks.Open ("C:\kain\Macro.xlsm")
   'запуск макроса
   objExcel.run "Macros_Update_all"
   'Закрываем файл после завершения макроса
    objExcel.Workbooks("Macro.xlsm").Close(false)
   'закрываем Excel
    objExcel.Quit
end sub

3. Вешаем VBS в Планировщик заданий по расписанию

ЗЫ Пункт 1 можно избежать если отправку письма сразу сделать в VBS.
Например https://winitpro.ru/index.php/2011/04/29/otpravka-pochty-iz-vbs-vbscript/
Страницы: 1
Наверх