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

Написал Bolmazov в 20/09/2008 20:42:26

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

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

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

Источник: https://powerclip.ru/modules/newbb/viewtopic.php?post_id=90369

Rambler's Top100