Многие отчеты после формирования не требуют какой-либо обработки и предполагают отправку данного отчета сразу по e-mail. Либо же даже в случае обработки конечный отчет все равно отправляется по почте. ООО позволяет автоматизировать и эту часть работы. Существуют две формы отправки таких отчетов сразу без пользовательского окна и полуавтомат, который открываем новое окно в почтовом клиенте с уже вложенным файлом и нужной темой. Можно даже стандартизировать текст тела сообщения, предварительно набрав его в файле и скопировав (напрямую ООО не позволяет писать тело сообщения).
Рассмотрим код из макроса Не привязанные позиции:
Sub Email_Neprivaz
'Сохраняем документ со всеми изменениями
ThisComponent.Store ()
'Объявляем переменные (стандартный блок)
Dim eMailAddress As String
Dim eSubject As String
Dim eMailer As Object
Dim Title As String
Dim Loc As String
Dim eMailClient As Object
Dim eMessage As Object
'Устанавливаем тему сообщения - в тему можно включать содержимое любых ячеек
eSubject = "Отчет Не привязанные позиции ГМ " & ThisComponent.Sheets (0).getCellByPosition(1, 0).String
'Создаем обработчик простой отправки
Title = thisComponent.CurrentController.Frame.Title
eMailer = createUnoService("com.sun.star.system.SimpleSystemMail")
eMailClient = eMailer.querySimpleMailClient()
eMessage = eMailClient.createSimpleMailMessage()
eMessage.setRecipient ("")
eMessage.setSubject (eSubject)
' Пишем, что вложением будет текущий документ
eMessage.setAttachement (Array(convertToUrl(ThisComponent.Location))
'Создаем в нашем документа строки, которые хотим вставить в тело собщения
' потом мы их удалим
ThisComponent.Sheets (0).getCellByPosition(4, 4).String = "Добрый день."
ThisComponent.Sheets (0).getCellByPosition(4, 5).String = "Во вложении Отчет не привязанные позиции ГМ " & ThisComponent.Sheets (0).getCellByPosition(1, 0).String
Sheet = ThisComponent.Sheets(0)
'Устанавливаем для этих строк оптимальную ширину, чтобы корректно скопировать
Columns = Sheet.Columns(4)
Columns.OptimalWidth = True
oCalcDoc = ThisComponent
oCalcCtrl = oCalcDoc.getCurrentController()
oSheet = oCalcDoc.getSheets().getByIndex( 0 )
oCellRanges = oCalcDoc.createInstance( "com.sun.star.sheet.SheetCellRanges" )
'Выделяем нужные нам ячейки
oCellRanges.addRangeAddress( oSheet.getCellRangeByName( "E5:E6" ).getRangeAddress(), False )
oCalcCtrl.select( oCellRanges )
'Вызываем функцию копирования
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
'Удаляем эти ячейки - они уже не нужны, мы все скопировали в буфер
ThisComponent.Sheets(0).Columns.removeByIndex(4,1)
oCell = ThisComponent.Sheets (0).getCellByPosition(0, 0)
ThisComponent.CurrentController.Select(oCell)
'Вызываем отправку сообщения
eMailClient.sendSimpleMailMessage ( eMessage, com.sun.star.system.SimpleMailClientFlags.DEFAULTS )
End Sub
Рассмотрим код из макроса Не привязанные позиции:
Sub Email_Neprivaz
'Сохраняем документ со всеми изменениями
ThisComponent.Store ()
'Объявляем переменные (стандартный блок)
Dim eMailAddress As String
Dim eSubject As String
Dim eMailer As Object
Dim Title As String
Dim Loc As String
Dim eMailClient As Object
Dim eMessage As Object
'Устанавливаем тему сообщения - в тему можно включать содержимое любых ячеек
eSubject = "Отчет Не привязанные позиции ГМ " & ThisComponent.Sheets (0).getCellByPosition(1, 0).String
'Создаем обработчик простой отправки
Title = thisComponent.CurrentController.Frame.Title
eMailer = createUnoService("com.sun.star.system.SimpleSystemMail")
eMailClient = eMailer.querySimpleMailClient()
eMessage = eMailClient.createSimpleMailMessage()
eMessage.setRecipient ("")
eMessage.setSubject (eSubject)
' Пишем, что вложением будет текущий документ
eMessage.setAttachement (Array(convertToUrl(ThisComponent.Location))
'Создаем в нашем документа строки, которые хотим вставить в тело собщения
' потом мы их удалим
ThisComponent.Sheets (0).getCellByPosition(4, 4).String = "Добрый день."
ThisComponent.Sheets (0).getCellByPosition(4, 5).String = "Во вложении Отчет не привязанные позиции ГМ " & ThisComponent.Sheets (0).getCellByPosition(1, 0).String
Sheet = ThisComponent.Sheets(0)
'Устанавливаем для этих строк оптимальную ширину, чтобы корректно скопировать
Columns = Sheet.Columns(4)
Columns.OptimalWidth = True
oCalcDoc = ThisComponent
oCalcCtrl = oCalcDoc.getCurrentController()
oSheet = oCalcDoc.getSheets().getByIndex( 0 )
oCellRanges = oCalcDoc.createInstance( "com.sun.star.sheet.SheetCellRanges" )
'Выделяем нужные нам ячейки
oCellRanges.addRangeAddress( oSheet.getCellRangeByName( "E5:E6" ).getRangeAddress(), False )
oCalcCtrl.select( oCellRanges )
'Вызываем функцию копирования
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
'Удаляем эти ячейки - они уже не нужны, мы все скопировали в буфер
ThisComponent.Sheets(0).Columns.removeByIndex(4,1)
oCell = ThisComponent.Sheets (0).getCellByPosition(0, 0)
ThisComponent.CurrentController.Select(oCell)
'Вызываем отправку сообщения
eMailClient.sendSimpleMailMessage ( eMessage, com.sun.star.system.SimpleMailClientFlags.DEFAULTS )
End Sub
После выполнения макроса перед вами откроется окно почтового клиента с новым письмом. Вам нужно встать в поле тела сообщения и нажать CTRL+V для того чтобы вставить текст из буфера обмена. Затем указываем адреса и отправляем.
Задача: Сделать макрос для отправки по почте отчета Сверка ДЗЛ за период, со стандартной темой и текстом сообщения.
Комментариев нет:
Отправить комментарий