Вставить текст в форму и распечатать её
17/09/2008 3:37:50
#Link
Нужно в имеющуюся форму (файл cdr) в заданное место вставить заданный текст ( допустим текст: "ЭТОТ_ТЕКСТ" ) и распечатать форму на принтере.
Я вижу у вас отличный сайт, тут толково объясняют.
Помогите пожалуйста решить задачку (или дайте конкретные указания что и как).
Я в этой области ни когда не варился (в VBA) и мне очень трудно. А тратить много времяни на изучения материалов смысла нет - это единичный случай.
Спасибо.
Re: Вставить текст в форму и распечатать её
17/09/2008 7:57:20
#Link
BolmazovА file>
Print Merge не подойдет?
Re: Вставить текст в форму и распечатать её
17/09/2008 9:32:16
#Link
Нет, т.к. описанная мной задача - часть более сложной задачи. Текст который нежно вставить в форму придёт из 1С (да и сама эта функция как ожидается вызовется из 1С через OLE).
Так что нужен именно код.
Re: Вставить текст в форму и распечатать её
17/09/2008 13:52:27
#Link
Bolmazovбыло всё просто а потом бах и
Цитата:
и доку читать не хотим, принт мердж не подходит...
хитрый однако.
Запиши всё из 1с в текстовый файл и подгрузи его в принт мердж
файл должен выглядеть так.
//ЭТОТ_ТЕКСТ//
//ЭТОТ_ТЕКСТ2//
//ETC//
в макет ставишь маркеры подмены <replace_this>
Re: Вставить текст в форму и распечатать её
17/09/2008 15:21:14
#Link
Я бы рад сделать как вы хотите, но это зависит не от меня. Сказали написать макрос, значит нужен макрос.
А на счет 1c, это уже не имеет отношение к моей просьбе, как там из 1с запустить Corel и выполнить макрос - совсем другая тема.
Поэтому задачка написания данного макроса, как мне кажется, для знатоков не сложная.
Так что, как я и писал изначально, мне нужна помощь в том как именно написать такой макрос.
Если будет удобно, то давайте конкретизирую вопрос:
1. Как найти место куда нужно вставить текст (как это место пометить что бы потом его можно было какой либо функцией VBA найти)?
2. Как вставить новый текст в поле?
3. Как грамотно вывести на печать данный документ?
Я очень надеюсь на вашу помощь.
Re: Вставить текст в форму и распечатать её
17/09/2008 19:06:46
#Link
... ну помогите, весь день жду. Весь интернет перерыл, никак нащупать нить не получается. Вам не очень трудно, а мне очень поможете.
Re: Вставить текст в форму и распечатать её
18/09/2008 8:11:55
#Link
Bolmazovвот в этом макросе использована подмена по тексту
http://powerclip.ru/modul...
Re: Вставить текст в форму и распечатать её
20/09/2008 20:42:26
#Link
Спасибо, с огромным трудом вроде что-то получается.
Но остаются вопросы и вот один из них:
Если писать макрос который открывает файл.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
И еще, может кто скажет как в VBA заменить допустим в этой фразе: "Нужно заменить это слово" заменить слово "это" так, что бы все настройки (жирный, подчеркнутый, отцентрованныи и т.п.) остались прежними?
Вы чего-то совсем не горите желанием помочь, но я надеюсь, что хотя бы на этот последний вопрос вы ответите.
Re: Вставить текст в форму и распечатать её
21/09/2008 20:09:00
#Link
BolmazovЦитата:
Вы чего-то совсем не горите желанием помочь, но я надеюсь, что хотя бы на этот последний вопрос вы ответите.
Я в VBA полный н0ль, сорри.
Чем мог тем помог.
Источник: https://powerclip.ru/modules/newbb/viewtopic.php?topic_id=8014&start=0