Здравствуйте. Пытался до последнего решить свои вопросы по созданию шаблонизатора сам: http://yadi.sk/d/FnDGj4pXJd7GN Возможно ход решения своих вопросов я выбрал не совсем правильный, но суть такова:
В файл импортируется исходный документ онлайн бухгалтерии (во время запуска выдатс запрос, что не нашел файл, можно отменить выбор) кроме импорта значения для формирования цен можно вставить вручную в другую вкладку, далее создается автоматически: Коммерческое предложение, Товарный чек, Счёт фактура, и Договор. Все кроме договора уже готово. Сам договор создается из шаблона с переменными, которые при нажатии кнопки "Сформировать" перегоняет шаблон с заменой переменных на нужные значения в колонку С12:K41 (или другой указанный мной), все уже работает как надо. Однако если прошлые документы выводятся без проблем, то с текстом договора оказалось сложнее, Ексель на экране в Страничном режиме показывает одно, а по факту в просмотре и при печати другое.
Вопрос. Возможные пути решения проблемы ,чтобы выводить текст договора в нормальном виде? Вкладка "Договор Торг" в файле.
Пытался: 1. Как ни подгоняй, а для универсального шаблона красиво вывести договор без появившегося пустого места между графами и в конце страницы да и еще с проблемой высоких по содержанию неразделимых ячеек, у меня не получилось. 2. Задумал вывести текст договора в объекте WinWord (по нажатию Кнопка 45, пока еще не назвал)
возникли вопросы: По коду возможно много мусора, так как копирую с разных источников, и иногда делаю что-то по аналогии, не понимая полностью всей сути.
Код
Sub Кнопка45_Щелчок()
If Cells(3, "BS") = 0 Then
Dim x As OLEObject
Set x = ActiveSheet.OLEObjects.Add(ClassType:="Word.Document", Link:=True _
, DisplayAsIcon:=True, Left:=400, Top:=120, Width:=800, Height:=2000)
Cells(3, "BS") = 1
End If
textinsert = Cells(12, "C") & Chr(10) & Cells(13, "C") & Chr(10) & Cells(14, "C") & Chr(10) & Cells(15, "C") & Chr(10) & Cells(16, "C") & Chr(10) & Cells(17, "C") & Chr(10) & Cells(18, "C") & Chr(10) & Cells(19, "C") & Chr(10)
Dim oOLEObj As OLEObject, oWD As Object, oNewDoc As Object, oRng As Object, _
blStBarState As Boolean, sOLE As String, iOLE As Long
For Each oOLEObj In ActiveSheet.OLEObjects
iOLE = iOLE + 1
With oOLEObj
If .progID Like "Word.Document*" Then
.Activate
.Object.Range.Text = textinsert
Range("C12:K41").Copy
.Object.Range.Paste
End If
End With
Next
If iOLE = 0 Then
Cells(3, "BS") = 0
End If
End Sub
вообще процедура вставки происходит здесь:
Код
For Each oOLEObj In ActiveSheet.OLEObjects
iOLE = iOLE + 1
With oOLEObj
If .progID Like "Word.Document*" Then
.Activate
.Object.Range.Text = textinsert
Range("C12:K41").Copy
.Object.Range.Paste
End If
End With
Next
Мне нужно не табличной вставкой вставить textinsert,
Код
.Object.Range.Text = textinsert
которая выше получает нужный текст договора, это происходит, на данном этапе было бы идеально макросом в ворде автоматически произвести форматирирование потом я хочу вставить (т.е. добавить) в табличном виде реквизиты контрагентов, кодом
Код
Range("C41:K41").Copy
однако на даном шаге у меня не получилось добавить текст, он только заменяется. Т.е. предыдущий текст пропадает, новый вставляется. А мне нужно чтобы добавилось.
После вставки почему то ширина листа внедренно объекта постоянно сбивается, хотя если закрыть внедрение и открыть по значку Внедрения (иконка возле названия Договора, форматирование сохраняется, пробывал вставлять область, а не иконку, не меняет проблемы) Итоговые вопросы: 1. Как в один объект внедрения вставить 2 и более (далее например если понадобиться) текста из таблицы. 2. Как при открытие внедренного объекта запустить записанный макрос или набранный макрос (записанный мною ранее макрос никак не сохранялся в этом документе)
Я согласен на создание отдельного вордовского файла, но с Олеобъектами и передачей туда данных что=то у меня не пошло. Пожалуйста помогите. заранее спасибо.
Вы считаете, интересно кому-то просматривать Вашу простыню? Пустые строки, код с кучей пустот, файл не на форуме... Ответ нужен Вам. Исправить не хотите?
я знаю что допускается не более 100 кб, что мне с ним сделать, если там все вкладки завязаны между собой и удалить их нельзя. По поводу в архив, мне кажется проще скачать без проблем файл на стороне, чем загонять его в архив сюда чтобы все его пришлось разархивировать, тем более, после редактирования этого файла мною, по той же ссылке можно будет скачать обновленный файл.
Я понимаю вы администраторы, но может замечания в личку написать, а так это флуд получается. Я реально нуждаюсь в помощи, а не прошу сделать все за меня, для вас я конечно новичек, но это не повод, тут вместо помощи цепляться к посту.
Суть да дело я сам пытаюсь решить этот вопрос, а пока меня тут только "трущат"
не в классическом майкрософтовом понимании шаблон документа
формируется колонка с нужным текстом и нужными переменными под условия договора, потом проходит формирование полного текста договора замещением значений переменных, сейчас я понимаю, что очень много костылей в итоге, но переделывать все под Закладки не решусь.
Буду изучать вставку в уже созданный вордовский файл, чтобы решить проблемы не сохранения вордовского макроса во внедренном объекте, в уже созданном ворд. файле макрос нужного доформатирования будет сохранен.
Конечное форматирование можно задать в Word. И при использовании Закладок и при Слиянии - текст договора будет растягиваться/сжиматься, в зависимости от подставляемых значений. На мой взгляд самый оптимальный вариант.