Регистрация | | запомнить |
 
 
ВК



Просматривают:   1 Анонимно





Вставить текст в форму и распечатать её
print | #
Новичок
Присоединился:
2008/9/17 2:54
Сообщений: 6
Offline
Нужно в имеющуюся форму (файл cdr) в заданное место вставить заданный текст ( допустим текст: "ЭТОТ_ТЕКСТ" ) и распечатать форму на принтере.

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

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


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

Спасибо.

Опубликовано: 2008/9/17 3:37


Re: Вставить текст в форму и распечатать её
PC/director
Присоединился:
2005/2/5 2:25
Откуда РФ
Сообщений: 4640
Offline
Bolmazov
А file>Print Merge не подойдет?

Опубликовано: 2008/9/17 7:57
_________________
I love vector graphics!!!


Re: Вставить текст в форму и распечатать её
Новичок
Присоединился:
2008/9/17 2:54
Сообщений: 6
Offline
Нет, т.к. описанная мной задача - часть более сложной задачи. Текст который нежно вставить в форму придёт из 1С (да и сама эта функция как ожидается вызовется из 1С через OLE).
Так что нужен именно код.

Опубликовано: 2008/9/17 9:32


Re: Вставить текст в форму и распечатать её
PC/director
Присоединился:
2005/2/5 2:25
Откуда РФ
Сообщений: 4640
Offline
Bolmazov
было всё просто а потом бах и
Цитата:
придёт из 1С

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

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

Опубликовано: 2008/9/17 13:52
_________________
I love vector graphics!!!


Re: Вставить текст в форму и распечатать её
Новичок
Присоединился:
2008/9/17 2:54
Сообщений: 6
Offline
Я бы рад сделать как вы хотите, но это зависит не от меня. Сказали написать макрос, значит нужен макрос.
А на счет 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
Offline
... ну помогите, весь день жду. Весь интернет перерыл, никак нащупать нить не получается. Вам не очень трудно, а мне очень поможете.

Опубликовано: 2008/9/17 19:06


Re: Вставить текст в форму и распечатать её
PC/director
Присоединился:
2005/2/5 2:25
Откуда РФ
Сообщений: 4640
Offline
Bolmazov
вот в этом макросе использована подмена по тексту
http://powerclip.ru/modul...

Опубликовано: 2008/9/18 8:11
_________________
I love vector graphics!!!


Re: Вставить текст в форму и распечатать её
Новичок
Присоединился:
2008/9/17 2:54
Сообщений: 6
Offline
Спасибо, с огромным трудом вроде что-то получается.

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

Если писать макрос который открывает файл.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
Offline
И еще, может кто скажет как в 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
Offline
Bolmazov
Цитата:
Вы чего-то совсем не горите желанием помочь, но я надеюсь, что хотя бы на этот последний вопрос вы ответите.

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

Опубликовано: 2008/9/21 20:09
_________________
I love vector graphics!!!


Re: Вставить текст в форму и распечатать её
Титан
Присоединился:
2005/12/15 14:22
Откуда Питер
Сообщений: 2826
Offline
Bolmazov, возможно, нужные тебе мастера в этом деле или не могут помочь, или просто не заходили сюда пока. И не надо обижаться на "нежелание помочь".

Опубликовано: 2008/9/22 10:31







Форма быстрого ответа
ЛогинИмя   Пароль   Логин
Сообщение:          

      ПРИМЕР


 [далее...]
Уведомлять о сообщениях в теме.



[Настройки поиска]