![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Всем доброго дня!
Парни, нужна помощь – бьюсь не первый день проблема в следующем! Задача склеивать вордовские документы, но при склейке у исходного документа ориентация листа и поля – должны быть как у источника. Порылся в сети собрал демку, на первый взгляд казалось бы работает. Но при переходе к следующему документу, настройка применяется КО ВСЕМУ ИСХОДНОМУ ДОКУМЕНТУ. Кто подскажет где не прав! Мой пример! Код:
var _WordApp_, _WinDocument_, _WinDocumentRange_: OleVariant; Const _Word_Title_ = 'Word.Application'; Function CentimetersToPoints( _Steps_: Single ): Single; begin Result := ( 28.5 * _Steps_ ); end; begin _WordApp_ := CreateOleObject( _Word_Title_ ); _WordApp_.Visible := True; _WinDocument_ := _WordApp_.Documents; _WinDocument_.Add; _WinDocumentRange_ := _WordApp_.ActiveDocument.Range; _WordApp_.ActiveDocument.Range.Font.Color := RGB( 250, 50, 147 ); //clred; _WordApp_.ActiveDocument.Range.Font.Bold := True; _WordApp_.ActiveDocument.Range.Font.Underline := True; _WordApp_.ActiveDocument.Range.Font.Size := 17; _WinDocumentRange_.InsertAfter( DateTimeToStr( NOW ) ); _WordAPP_.ActiveDocument.Range( _StartPos_, _EndPos_ ).PageSetup.LeftMargin := _WordAPPSRC_.Selection.PageSetup.LeftMargin ; _WordAPP_.ActiveDocument.Range( _StartPos_, _EndPos_ ).PageSetup.TopMargin := _WordAPPSRC_.Selection.PageSetup.TopMargin ; _WordAPP_.ActiveDocument.Range( _StartPos_, _EndPos_ ).PageSetup.RightMargin := _WordAPPSRC_.Selection.PageSetup.RightMargin ; _WordAPP_.ActiveDocument.Range( _StartPos_, _EndPos_ ).PageSetup.BottomMargin := _WordAPPSRC_.Selection.PageSetup.BottomMargin ; _WordAPP_.ActiveDocument.Range( _StartPos_, _EndPos_ ).PageSetup.Orientation := _WordAPPSRC_.Selection.PageSetup.Orientation ; // _WordAPP_.ActiveDocument.Range( _WordAPP_.ActiveDocument.Characters.Count - 1, _WordAPP_.ActiveDocument.Characters.Count ).PageSetup.LeftMargin := _WordAPPSRC_.Selection.PageSetup.LeftMargin; Последний раз редактировалось Admin, 26.05.2025 в 13:36. |
#2
|
||||
|
||||
![]() Если проделать операцию "ручками" в MS Word, то это будет выглядеть +/- так:
1. Вставить разрыв раздела 2. Изменить параметры страниц нового раздела. Если включить запись макроса и проделать все тоже самое ручками, то получим: Код:
Sub Макрос1() ' ' Макрос1 Макрос ' ' Selection.InsertBreak Type:=wdSectionBreakNextPage If Selection.PageSetup.Orientation = wdOrientPortrait Then Selection.PageSetup.Orientation = wdOrientLandscape Else Selection.PageSetup.Orientation = wdOrientPortrait End If With Selection.PageSetup .LineNumbering.Active = False .Orientation = wdOrientLandscape .TopMargin = CentimetersToPoints(3) .BottomMargin = CentimetersToPoints(1.5) .LeftMargin = CentimetersToPoints(2) .RightMargin = CentimetersToPoints(2) .Gutter = CentimetersToPoints(0) .HeaderDistance = CentimetersToPoints(1.25) .FooterDistance = CentimetersToPoints(1.25) .PageWidth = CentimetersToPoints(41.99) .PageHeight = CentimetersToPoints(29.7) .FirstPageTray = wdPrinterDefaultBin .OtherPagesTray = wdPrinterDefaultBin .SectionStart = wdSectionNewPage .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .VerticalAlignment = wdAlignVerticalTop .SuppressEndnotes = False .MirrorMargins = False .TwoPagesOnOne = False .BookFoldPrinting = False .BookFoldRevPrinting = False .BookFoldPrintingSheets = 1 .GutterPos = wdGutterPosLeft End With End Sub Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
Этот пользователь сказал Спасибо dr. F.I.N. за это полезное сообщение: | ||
TiKey (27.05.2025)
|