Здравствуйте. Пытался до последнего решить свои вопросы по созданию шаблонизатора сам: 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. Как при открытие внедренного объекта запустить записанный макрос или набранный макрос (записанный мною ранее макрос никак не сохранялся в этом документе)
Я согласен на создание отдельного вордовского файла, но с Олеобъектами и передачей туда данных что=то у меня не пошло. Пожалуйста помогите. заранее спасибо.
Одна программа создает типовые файлы, но именует их по разному, эти имена нужно чтобы остались такими же, как их сохраняет программа.
Я эти файлы обрабатываю в своем файле, считывая значения ячеек по ссылкам вида: ='[Счёт №1 от 07 февраля 2014 г..xls]Счёт'!$B$11 например.
Можно ли название "Счёт №1 от 07 февраля 2014 г..xls" брать из яйчеки в моем файле, два файла будут находится в одной директории, пути не нужны. В идеале конечно было бы чтобы ячейки обновлялись после смены названия файлы в нужной ячейке.
Помогите пожалуйста, поиск дал похожие темы, но чаще всего люди просят при сохранении назвать файл как им нужно из ячейки.