V-Форум / Corel VBA / Тема: Вставить текст в форму и распечатать её

Вставить текст в форму и распечатать её

 17/09/2008 3:37:50 #Link

Bolmazov

Нужно в имеющуюся форму (файл cdr) в заданное место вставить заданный текст ( допустим текст: "ЭТОТ_ТЕКСТ" ) и распечатать форму на принтере.

Я вижу у вас отличный сайт, тут толково объясняют.

Помогите пожалуйста решить задачку (или дайте конкретные указания что и как).


Я в этой области ни когда не варился (в VBA) и мне очень трудно. А тратить много времяни на изучения материалов смысла нет - это единичный случай.

Спасибо.

Re: Вставить текст в форму и распечатать её

 17/09/2008 7:57:20 #Link

mendow

Bolmazov
А file>Print Merge не подойдет?

Re: Вставить текст в форму и распечатать её

 17/09/2008 9:32:16 #Link

Bolmazov

Нет, т.к. описанная мной задача - часть более сложной задачи. Текст который нежно вставить в форму придёт из 1С (да и сама эта функция как ожидается вызовется из 1С через OLE).
Так что нужен именно код.

Re: Вставить текст в форму и распечатать её

 17/09/2008 13:52:27 #Link

mendow

Bolmazov
было всё просто а потом бах и
Цитата:
придёт из 1С

и доку читать не хотим, принт мердж не подходит...
хитрый однако.

Запиши всё из 1с в текстовый файл и подгрузи его в принт мердж
файл должен выглядеть так.
//ЭТОТ_ТЕКСТ//
//ЭТОТ_ТЕКСТ2//
//ETC//
в макет ставишь маркеры подмены <replace_this>

Re: Вставить текст в форму и распечатать её

 17/09/2008 15:21:14 #Link

Bolmazov

Я бы рад сделать как вы хотите, но это зависит не от меня. Сказали написать макрос, значит нужен макрос.
А на счет 1c, это уже не имеет отношение к моей просьбе, как там из 1с запустить Corel и выполнить макрос - совсем другая тема.

Поэтому задачка написания данного макроса, как мне кажется, для знатоков не сложная.

Так что, как я и писал изначально, мне нужна помощь в том как именно написать такой макрос.

Если будет удобно, то давайте конкретизирую вопрос:
1. Как найти место куда нужно вставить текст (как это место пометить что бы потом его можно было какой либо функцией VBA найти)?
2. Как вставить новый текст в поле?
3. Как грамотно вывести на печать данный документ?

Я очень надеюсь на вашу помощь.

Re: Вставить текст в форму и распечатать её

 17/09/2008 19:06:46 #Link

Bolmazov

... ну помогите, весь день жду. Весь интернет перерыл, никак нащупать нить не получается. Вам не очень трудно, а мне очень поможете.

Re: Вставить текст в форму и распечатать её

 18/09/2008 8:11:55 #Link

mendow

Bolmazov
вот в этом макросе использована подмена по тексту
http://powerclip.ru/modul...

Re: Вставить текст в форму и распечатать её

 20/09/2008 20:42:26 #Link

Bolmazov

Спасибо, с огромным трудом вроде что-то получается.

Но остаются вопросы и вот один из них:

Если писать макрос который открывает файл.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

Re: Вставить текст в форму и распечатать её

 20/09/2008 21:45:58 #Link

Bolmazov

И еще, может кто скажет как в VBA заменить допустим в этой фразе: "Нужно заменить это слово" заменить слово "это" так, что бы все настройки (жирный, подчеркнутый, отцентрованныи и т.п.) остались прежними?

Вы чего-то совсем не горите желанием помочь, но я надеюсь, что хотя бы на этот последний вопрос вы ответите.

Re: Вставить текст в форму и распечатать её

 21/09/2008 20:09:00 #Link

mendow

Bolmazov
Цитата:
Вы чего-то совсем не горите желанием помочь, но я надеюсь, что хотя бы на этот последний вопрос вы ответите.

Я в VBA полный н0ль, сорри.
Чем мог тем помог.
(1) 2 »

Источник: https://powerclip.ru/modules/newbb/viewtopic.php?topic_id=8014&start=0

Rambler's Top100