Что нового

Задача: заполнение формы .doc, прикрепить к письму и отправить.

Kalaputsa

Новичок
Сообщения
13
Репутация
0
Здравствуйте.
Есть задачка :stars:
Что должен делать скрипт: Запустить форму-документ .doc в котором надо заполнить от 1 до 5 строк в таблице, потом создать сообщение в Outlook и отправить уже известным адресатам.

Как я это вижу: При запуске скрипта появляется GUI окно в котором заполняются строки ручками, после жмём на "ОК" и скрипт всё делает сам, т.е. создаёт сообщение, прикрепляет документ и отправляет адресатам которые были указаны в скрипте.

Подскажите пожалуйста какие функции нужны для задачи и с чего начинать надо.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
можно немного по-другому. отрыть документ ручками, заполнить и сохранить в определенное место. запустить скрипт , к примеру, такой http://autoit-script.ru/index.php/topic,9128.msg61146.html#msg61146 указать в нем путь к документу и используя файл с адресами отослать адресатам файл без программы Outlook
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Kalaputsa,
Можно сделать шаблон и менять в нем данные с помощью функции _WordDocFindReplace().
 
Автор
K

Kalaputsa

Новичок
Сообщения
13
Репутация
0
Александр
Спасибо за ответ, но это не подходит... В виду того, что из-за доменной политики отправить письмо без почтового клиента не реально :(

madmasles
Спасибо за функцию... Но как я понял эта функция находит и заменяет, а мне это не надо, так как строки будут пустые.
 
Автор
K

Kalaputsa

Новичок
Сообщения
13
Репутация
0
Сделал GUI окно
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
; Создание таблицы
$Form1 = GUICreate("Вынос", 615, 508, 192, 124)
; Ячейки первой группы
$Input1 = GUICtrlCreateInput("", 240, 56, 193, 21)
$Input2 = GUICtrlCreateInput("", 240, 88, 193, 21)
$Input3 = GUICtrlCreateInput("", 240, 120, 193, 21)
$Input4 = GUICtrlCreateInput("", 240, 152, 193, 21)
$Input5 = GUICtrlCreateInput("", 240, 184, 193, 21)
; Описание ячеек первой группы
$Label1 = GUICtrlCreateLabel("По адресу", 168, 56, 68, 17)
$Label2 = GUICtrlCreateLabel("Куда направляется", 168, 88, 68, 17)
$Label3 = GUICtrlCreateLabel("кто вносит", 168, 120, 68, 17)
$Label4 = GUICtrlCreateLabel("Подразделение", 168, 152, 68, 17)
$Label5 = GUICtrlCreateLabel("С целью", 168, 184, 68, 17)
; Ячейки второй группы
$Input6 = GUICtrlCreateInput("", 192, 288, 153, 21)
$Input7 = GUICtrlCreateInput("", 192, 320, 153, 21)
$Input8 = GUICtrlCreateInput("", 192, 352, 153, 21)
; Описание ячеек второй группы
$Label6 = GUICtrlCreateLabel("1", 168, 288, 28, 17)
$Label7 = GUICtrlCreateLabel("2", 168, 320, 28, 17)
$Label8 = GUICtrlCreateLabel("3", 168, 352, 28, 17)
$Label9 = GUICtrlCreateLabel("Наименование", 224, 264, 100, 17)
; Маленькии ячейки второй группы
$Input9 = GUICtrlCreateInput("", 360, 288, 33, 21)
$Input10 = GUICtrlCreateInput("", 360, 320, 33, 21)
$Input11 = GUICtrlCreateInput("", 360, 352, 33, 21)
; Описание маленьких ячеек второй группы
$Label10 = GUICtrlCreateLabel("Штук", 360, 264, 42, 17)
; Кнопка 
$Button1 = GUICtrlCreateButton("Нажми на кнопку получишь результат", 184, 432, 243, 25)
; Контур первой группы
$Group1 = GUICtrlCreateGroup("Куда, чего и зачем", 136, 40, 345, 193)
GUICtrlCreateGroup("", -99, -99, 1, 1)
; Контур второй группы
$Group2 = GUICtrlCreateGroup("Что тащим?", 136, 248, 345, 153)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd


Как теперь к ячейкам привязать действия, а именно заполнять строки в файле .doc?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Kalaputsa [?]
Как теперь к ячейкам привязать действия
Пример. Файл template.doc (в прикрепленном архиве) должен лежать в одной папке со скриптом.
Код:
#include <GUIConstantsEx.au3>
#include <Word.au3>

Global $aInput[6] = [5], $sTemplate = @ScriptDir & '\template.doc', $sFile = @ScriptDir & '\test.doc', _
		$aFind[6] = [5, '_First', '_Second', '_Third', '_Fourth', '_Fifth']

$hGui = GUICreate('Test', 200, 50 + $aInput[0] * 30)
For $i = 1 To $aInput[0]
	$aInput[$i] = GUICtrlCreateInput('', 20, 10 + ($i - 1) * 30, 160, 20)
Next
$nButton = GUICtrlCreateButton('Click me', 50, 10 + $aInput[0] * 30, 100, 30)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton
			;Без проверок на ошибки, лучше функцией сделать.
			If Not FileCopy($sTemplate, $sFile, 1) Then ContinueLoop
			Local $aReplace[$aInput[0] + 1] = [$aInput[0]]
			For $i = 1 To $aInput[0]
				$aReplace[$i] = GUICtrlRead($aInput[$i])
				If Not $aReplace[$i] Then $aReplace[$i] = 'No text replace ' & $i
			Next
			$oWord = _WordCreate($sFile, 0, 0)
			$oDoc = _WordDocGetCollection($oWord, 0)
			For $i = 1 To $aReplace[0]
				_WordDocFindReplace($oDoc, $aFind[$i], $aReplace[$i])
			Next
			_WordDocSave($oDoc)
			_WordQuit($oWord)
			$aReplace = 0
			$oWord = 0
			$oDoc = 0
			ShellExecute($sFile)
	EndSwitch
WEnd
 
Верх