[identity profile] hopunchik.livejournal.com posting in [community profile] useful_faq
Сообщнике, помогите!

Есть excel список с параметрами контрагента ( название, инфа для шаблона, имя файла). Есть шаблон word, по которому нужно для каждого клиента сформировать письмо и сохранить отдельным файлом.

MailMerge делает половину работы, создает письмо для каждого клиента, но все в одном файле. Есть возможность разделить этот файл и сохранить это отдельными файлами с наименованием по шаблону?

Date: 2012-09-27 06:29 am (UTC)
From: [identity profile] technic.livejournal.com
Уверен, что такую задачу лучше всего решить при помощи набора скриптов на VBA.

P.S.: в свое время, у меня тоже встала такая задача - надо было формировать файлы задач на день по шаблонам и рассылать письма с каждому сотруднику из разных офисов. Потратил где-то 2-3 дня - написал программку-скрипт. Профит! Использование программки позволило сократить первоначальное затрачиваемое время в разы. =)

Date: 2012-09-27 07:21 am (UTC)
From: [identity profile] ikaktys.livejournal.com
либо с любого другого языка создать вордовский и экселевский объекты и рулить ими произвольно по желанию, возможности практически те же самые что и делать можно все то же что и вручную, местами даже больше.

Date: 2012-09-27 07:29 am (UTC)
From: [identity profile] ikaktys.livejournal.com
ну просто создать кучу документов по одному шаблону с данными заполнеными из Excel или любой другой базы - в ворде есть "Серийные письма", делаются достаточно быстро без программирования.

сохранить их по отдельности оно само не может, но есть кучи готового VBA кода, например :

Sub Test()

Dim actpath As String, Dateiname As String

Const path As String = "C:\EigeneDateien\" 'Pfad anpassen

On Error GoTo 0

'Application.ScreenUpdating = False 'Bildschirmanzeige etc
'Application.Visible = False

Dim LetzterRec As Long
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord
LetzterRec = Word.ActiveDocument.MailMerge.DataSource.ActiveRecord

ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord

With ActiveDocument.MailMerge
.DataSource.ActiveRecord = wdFirstRecord
Do
If .DataSource.ActiveRecord > 0 Then
.Destination = wdSendToNewDocument
.SuppressBlankLines = True

With .DataSource

actpath = path & .DataFields("LG") & "\" 'Der aktuelle Pfad wird zusammengesetzt aus path und dem Inhalt des Datenfeldes "LG"
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.folderexists(actpath) = False Then MkDir (actpath) 'Wenn der Pfad noch nicht existiert wird er jetzt erstellt


.FirstRecord = .ActiveRecord
.LastRecord = .ActiveRecord

Dateiname = actpath & _
.DataFields("Name").Value & ", " & _
.DataFields("Vorname").Value & ".doc 'Dateiname = Name, Vorname.doc
End With
.Execute Pause:=False 'erstellt Document

ActiveDocument.SaveAs FileName:=Dateiname 'Speichern unter Dateiname
ActiveDocument.Close False
End If

If .DataSource.ActiveRecord < LetzterRec Then
.DataSource.ActiveRecord = wdNextRecord
Else
Exit Do
End If
Loop


End With


MsgBox ("Ready")
Application.Visible = True
Application.ScreenUpdating = True

End Sub

Date: 2012-09-27 07:28 am (UTC)
From: [identity profile] technic.livejournal.com
Согласен

Date: 2012-09-27 07:28 am (UTC)
From: [identity profile] technic.livejournal.com
Офис = потрясающий конструктор. Решить можно абсолютно любые задачи.

Но... скрипты все-таки создавать придется. Задачка у вас не совсем универсальная.
Лучше б зашли на фрилансру и за "копейку" решили бы свою проблемку. Серьезно.

Date: 2012-09-27 07:37 am (UTC)
From: [identity profile] ikaktys.livejournal.com
задача всплывает очень часто везде, так что готовый VBA ищется за 3 минуты на любом языке (в смысле для VBA, но что на русском или английском, китайском и т.д. )

Date: 2012-09-27 05:55 pm (UTC)
From: [identity profile] technic.livejournal.com
Естественно :)
"Знал бы прикуп", нашел бы за пару минут :)

Подобное же услышал сегодня от своего оракл-девелопера - "фигня вопрос, за пару минут нагуглю".

P.S.: кто в теме вопроса, находит сразу и после мелких допилок уже все ок.

Date: 2012-09-28 05:23 am (UTC)
From: [identity profile] ikaktys.livejournal.com
ну а кто не в теме - курит бамбук, так как по нужным словам тут же находится серийное письмо и тут же - что сам по себе ворд не умеет это сохранять по отдельнвм файлам, но опять же - тут же находится VBA который чууууть чуть подпилить под себя надо, а если уж и это никак - тогда попросить кого-нить лично, тут или на форумах для ворда, и может тот согласится подпилить, а не ждать пока кто то сам возьмется все из тебя вытягивать и делать за тебя.

Date: 2012-09-28 01:29 pm (UTC)
From: [identity profile] technic.livejournal.com
Быстре и дешевле опубликовать этот "копеейчный" заказ - и после этого можно сидеть и курить бамбук :)

Date: 2012-10-01 06:34 am (UTC)
From: [identity profile] ikaktys.livejournal.com
ну я стою 65еур/ч + 19% НДС :) минимум - 3 часа.

Date: 2012-10-01 03:00 pm (UTC)
From: [identity profile] technic.livejournal.com
А спрос-то есть? :))))

P.S.: если по делу, то такое на фрилан.сру можно заказать в 500 рублев :)
Сам заказываю иногда.
Edited Date: 2012-10-01 03:01 pm (UTC)

Date: 2012-10-01 08:05 pm (UTC)
From: [identity profile] ikaktys.livejournal.com
да есть спрос то вполне, но не по такой мелочевке естессно, если надо по ораклу там, MS SQL, да еще если базы размером под 300-400Тб, инфраструктура под это, и все мишура вокруг - обращайтесь. Ну или WinCC/SCADA и прочее.