Просматривают:
1 Анонимно
Вставить текст в форму и распечатать её |
||
|
||
---|---|---|
Новичок
Присоединился:
2008/9/17 2:54 Сообщений: 6
|
Нужно в имеющуюся форму (файл cdr) в заданное место вставить заданный текст ( допустим текст: "ЭТОТ_ТЕКСТ" ) и распечатать форму на принтере.
Я вижу у вас отличный сайт, тут толково объясняют. Помогите пожалуйста решить задачку (или дайте конкретные указания что и как). Я в этой области ни когда не варился (в VBA) и мне очень трудно. А тратить много времяни на изучения материалов смысла нет - это единичный случай. Спасибо.
Опубликовано: 2008/9/17 3:37
|
|
|
Re: Вставить текст в форму и распечатать её |
|
---|---|---|
PC/director
Присоединился:
2005/2/5 2:25 Откуда РФ
Сообщений: 4640
|
Bolmazov
А file>Print Merge не подойдет?
Опубликовано: 2008/9/17 7:57
|
|
_________________
I love vector graphics!!! |
||
|
Re: Вставить текст в форму и распечатать её |
|
---|---|---|
Новичок
Присоединился:
2008/9/17 2:54 Сообщений: 6
|
Нет, т.к. описанная мной задача - часть более сложной задачи. Текст который нежно вставить в форму придёт из 1С (да и сама эта функция как ожидается вызовется из 1С через OLE).
Так что нужен именно код.
Опубликовано: 2008/9/17 9:32
|
|
|
Re: Вставить текст в форму и распечатать её |
|
---|---|---|
PC/director
Присоединился:
2005/2/5 2:25 Откуда РФ
Сообщений: 4640
|
Bolmazov
было всё просто а потом бах и Цитата: придёт из 1С и доку читать не хотим, принт мердж не подходит... хитрый однако. Запиши всё из 1с в текстовый файл и подгрузи его в принт мердж файл должен выглядеть так. //ЭТОТ_ТЕКСТ// //ЭТОТ_ТЕКСТ2// //ETC// в макет ставишь маркеры подмены <replace_this>
Опубликовано: 2008/9/17 13:52
|
|
_________________
I love vector graphics!!! |
||
|
Re: Вставить текст в форму и распечатать её |
|
---|---|---|
Новичок
Присоединился:
2008/9/17 2:54 Сообщений: 6
|
Я бы рад сделать как вы хотите, но это зависит не от меня. Сказали написать макрос, значит нужен макрос.
А на счет 1c, это уже не имеет отношение к моей просьбе, как там из 1с запустить Corel и выполнить макрос - совсем другая тема. Поэтому задачка написания данного макроса, как мне кажется, для знатоков не сложная. Так что, как я и писал изначально, мне нужна помощь в том как именно написать такой макрос. Если будет удобно, то давайте конкретизирую вопрос: 1. Как найти место куда нужно вставить текст (как это место пометить что бы потом его можно было какой либо функцией VBA найти)? 2. Как вставить новый текст в поле? 3. Как грамотно вывести на печать данный документ? Я очень надеюсь на вашу помощь.
Опубликовано: 2008/9/17 15:21
Edited by Bolmazov on 17/09/2008 17:14:38
|
|
|
Re: Вставить текст в форму и распечатать её |
|
---|---|---|
Новичок
Присоединился:
2008/9/17 2:54 Сообщений: 6
|
... ну помогите, весь день жду. Весь интернет перерыл, никак нащупать нить не получается. Вам не очень трудно, а мне очень поможете.
Опубликовано: 2008/9/17 19:06
|
|
|
Re: Вставить текст в форму и распечатать её |
|
---|---|---|
PC/director
Присоединился:
2005/2/5 2:25 Откуда РФ
Сообщений: 4640
|
Опубликовано: 2008/9/18 8:11
|
|
_________________
I love vector graphics!!! |
||
|
|
Re: Вставить текст в форму и распечатать её |
|
---|---|---|
Новичок
Присоединился:
2008/9/17 2:54 Сообщений: 6
|
Спасибо, с огромным трудом вроде что-то получается.
Но остаются вопросы и вот один из них: Если писать макрос который открывает файл.cdr и делает вышеописанные вещи, пичатает файл а потом закрывает его, то при открытии Corel предупреждает о наличии макроса в файле.cdr что в поем случае нежелательно. Вопрос: данное предупреждение неизбежно? А вот что получается, кому интересно: Sub for1c() Dim doc As Document Dim s As Shape Dim pN, p1, p2, findeForm As String Dim marksPosition As Integer Set doc = OpenDocument("C:\Documents and Settings\Bolmazov Denis\Ðàáî÷èé ñòîë\coredraw_test\test.cdr" findeForm = "Form" p1 = "param1" p2 = "param2" Dim markN, mark1, mark2 As String mark1 = "<mark1>" mark2 = "<mark2>" On Error Resume Next Set doc = ActiveDocument For Each p In doc.Pages For Each s In p.Shapes If s.Type = cdrTextShape Then If InStr(s.Text.Story, findeForm) Then markN = mark1 pN = p1 startPosition = 1 marksPosition = InStr(startPosition, s.Text.Story, markN) Do While (marksPosition) marksPosition = InStr(startPosition, s.Text.Story, markN) If marksPosition Then s.Text.Story = Left(s.Text.Story, marksPosition + Len(markN)) & pN & Right(s.Text.Story, Len(s.Text.Story) - marksPosition - Len(markN) - Len(pN)) End If startPosition = marksPosition + Len(markN) Loop markN = mark2 pN = p2 startPosition = 1 marksPosition = InStr(startPosition, s.Text.Story, markN) Do While (marksPosition) marksPosition = InStr(startPosition, s.Text.Story, markN) If marksPosition Then s.Text.Story = Left(s.Text.Story, marksPosition + Len(markN)) & pN & Right(s.Text.Story, Len(s.Text.Story) - marksPosition - Len(markN) - Len(pN)) End If startPosition = marksPosition + Len(markN) Loop End If End If Next s Next p ActiveDocument.PrintOut doc.Close End Sub
Опубликовано: 2008/9/20 20:42
|
|
|
Re: Вставить текст в форму и распечатать её |
|
---|---|---|
Новичок
Присоединился:
2008/9/17 2:54 Сообщений: 6
|
И еще, может кто скажет как в VBA заменить допустим в этой фразе: "Нужно заменить это слово" заменить слово "это" так, что бы все настройки (жирный, подчеркнутый, отцентрованныи и т.п.) остались прежними?
Вы чего-то совсем не горите желанием помочь, но я надеюсь, что хотя бы на этот последний вопрос вы ответите.
Опубликовано: 2008/9/20 21:45
Edited by Bolmazov on 21/09/2008 0:03:48
|
|
|
Re: Вставить текст в форму и распечатать её |
|
---|---|---|
PC/director
Присоединился:
2005/2/5 2:25 Откуда РФ
Сообщений: 4640
|
Bolmazov
Цитата: Вы чего-то совсем не горите желанием помочь, но я надеюсь, что хотя бы на этот последний вопрос вы ответите. Я в VBA полный н0ль, сорри. Чем мог тем помог.
Опубликовано: 2008/9/21 20:09
|
|
_________________
I love vector graphics!!! |
||
|
Re: Вставить текст в форму и распечатать её |
|
---|---|---|
Титан
Присоединился:
2005/12/15 14:22 Откуда Питер
Сообщений: 2826
|
Bolmazov, возможно, нужные тебе мастера в этом деле или не могут помочь, или просто не заходили сюда пока. И не надо обижаться на "нежелание помочь".
Опубликовано: 2008/9/22 10:31
|
|