28K
08 июня 2007 года
Noter
3 / / 08.06.2007
Необходимо перенести данные из excel в word. Программа (на VBA) копирует, вставляет.
Однако таблица достаточно большая и необходимо перед вставкой в word сделать лист альбомный.
Подскажите как реализовать.
Заранее спасибо.
2 ответа
18K
08 июня 2007 года
pavel55
79 / / 14.05.2007
1) Открыть Word
2) Включить запись макроса
3) Вручную сделать ориентацию листа Альбомная
4) Остановить запись макроса
5) Посмотреть созданный макросом код и подчистить его и вы получите след. строку
Код:
ActiveDocument.PageSetup.Orientation = wdOrientLandscape
28K
08 июня 2007 года
Noter
3 / / 08.06.2007
Спасибо большое за ответ. Однако мне необходимо было именно, чтобы макрос, записанный в Excel поменял ориентацию страницы в Word.
Вроде бы разобрался. Фишка была в том, что команда
ActiveDocument.PageSetup.Orientation = wdOrientLandscape
не прокатывала, так как не определялась в VBA из-под Excel.
Set wrd = CreateObject(«Word.Application»)
wrd.ActiveDocument.PageSetup.Orientation = 1
(в общем 1 вместо wdOrientLandscape) изменило ситуацию
Meri |
|
1 |
|
30.09.2007, 17:10. Показов 7392. Ответов 10
Помогите! Как из VB поменять ориентацию страницы в Ворде? |
0 / 0 / 1 Регистрация: 22.07.2007 Сообщений: 260 |
|
30.09.2007, 17:17 |
2 |
ActiveDocument.PageSetup.Orientation = wdOrientLandscape или ActiveDocument.PageSetup.Orientation = wdOrientPortrait
0 |
Meri |
|
01.10.2007, 17:34 |
3 |
Спасибо за ответ. |
0 / 0 / 1 Регистрация: 22.07.2007 Сообщений: 260 |
|
01.10.2007, 19:19 |
4 |
Подробнее, какого курсора и где ?
0 |
Meri |
|
02.10.2007, 10:33 |
5 |
Курсор в документе Word. |
0 / 0 / 1 Регистрация: 22.07.2007 Сообщений: 260 |
|
02.10.2007, 10:56 |
6 |
Примерно так Selection.MoveDown Unit:=wdLine, Count:=3
0 |
Meri |
|
02.10.2007, 11:16 |
7 |
Спасибо за подсказку. Все замечательно работает, но у меня в Ворде создается таблица которая ни как не хочет перемещаться в нужное положение, а создается всегда в начале документа, я думал это лечится положением курсора, куда поставишь, там и будет создаваться таблица , однако это почему-то не работает.HELP!!! |
0 / 0 / 1 Регистрация: 22.07.2007 Сообщений: 260 |
|
02.10.2007, 12:18 |
8 |
Для того чтобы таблица опустилась ниже начала документа можно набить вначале переводы строки Selection.TypeParagraph
0 |
Meri |
|
02.10.2007, 12:47 |
9 |
Спасибо за ценные советы, теперь работает как надо. |
Meri |
|
02.10.2007, 12:55 |
10 |
Слушай, AndreP, а ты случайно не знаешь как программно добавить колонтитулы? |
0 / 0 / 1 Регистрация: 22.07.2007 Сообщений: 260 |
|
02.10.2007, 13:09 |
11 |
Ответ на все подобные вопросы сразу (уже раз пять про это здесь писал, почему до самих начинающих VBA программистов это не до ходит):
0 |
I think this would be an easy soultion, but I can’t find the way…..
So the problem is this, I have an excel document with different sheets, but in just one sheet I want to create a table, after that (I can do it), that table will paste on a new word document.
In this new word document I want to set the orientation to landscape, but obviously I don’t want to make it manual, so when I use the .PageSetUp or .Orientation syntaxis, they give me an error.
I tried using With.WordApp.PageSetUp.Orientation = xlLandscape or wdLandscape but I can’t.
So there is a way that I can open a new word document, and automatically set the orientation to Landscape and after that paste the selection from excel to that page. And In this new document I tried to set up the Margins, and same case. .LeftMargin = CentimetersToPoints(1), but the error appears.
Option Explicit
Sub Imprimir()
Dim WordApp As Object
Dim f, ff As Date
Dim s, qty As Integer
Dim NoEncontrado As Boolean
Dim doc As Documents
Sheets("Entrega").Select
f = Sheets("Entrega").Range("D1").Value
qty = 1
s = 35
NoEncontrado = True
Do While NoEncontrado = True
Do While qty < 30
Sheets("Concentrado").Select
Cells(s, 7).Select
ff = Sheets("Concentrado").Cells(s, 7).Value
If f = ff Then
Sheets("Concentrado").Select
Sheets("Concentrado").Cells(s, 3).EntireRow.Select
selection.Copy
Sheets("Entrega").Select
ActiveSheet.Range("A4").Select
selection.PasteSpecial Paste:=xlPasteValues
qty = qty + 1
s = s - 1
Rows("4:4").Select
selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Else
qty = qty + 1
s = s - 1
End If
Loop
NoEncontrado = False
Loop
Set WordApp = CreateObject("Word.Application")
Sheets("Entrega").Select
ActiveSheet.Range("G1").Select
Range("D3:S35").Select
selection.Copy
MsgBox (" Entrega de guardia del día " & f & " lista para imprimir"), vbInformation
With WordApp 'Con este codigo se abrira Word y se creara un documento nuevo
.Visible = True
.Activate
.Documents.Add
End With
WordApp.selection.PasteSpecial link:=True 'Se pegara en el documento lo seleccionado en la hoja de calculo
selection.pagesetup.Orientation = wdOrientLandscape
Set WordApp = Nothing
Sheets("Entrega").Select
Range("A4:CA34").Select
selection.ClearContents
End Sub
Алексей спрашивает:
Имеется документ с несколькими страницами, которые имеют разную ориентацию и формат (А4 и А3). Как определить формат и ориентацию текущей страницы?
Для этих целей можно воспользоваться, например, таким макросом (с функцией):
Sub Ident_Orient_PaperSize() 'Определение ориентации и формата страницы документа If Selection.PageSetup.Orientation = wdOrientLandscape Then MsgBox "Ориентация текущей страницы - Альбомная" & vbCr _ & "Формат страницы - " & PaperSizeDoc(Selection.PageSetup.PaperSize) Else MsgBox "Ориентация текущей страницы - Книжная" & vbCr _ & "Формат страницы - " & PaperSizeDoc(Selection.PageSetup.PaperSize) End If End Sub Public Function PaperSizeDoc(iPS As Long) As String Dim ps(42) As String iPS = Selection.PageSetup.PaperSize ps(0) = "wdPaper10x14" ps(1) = "wdPaper11x17" ps(2) = "wdPaperLetter" ps(3) = "wdPaperLetterSmall" ps(4) = "wdPaperLegal" ps(5) = "wdPaperExecutive" ps(6) = "wdPaperA3" ps(7) = "wdPaperA4" ps(8) = "wdPaperA4Small" ps(9) = "wdPaperA5" ps(10) = "wdPaperB4" ps(11) = "wdPaperB5" ps(12) = "wdPaperCSheet" ps(13) = "wdPaperDSheet" ps(14) = "wdPaperESheet" ps(15) = "wdPaperFanfoldLegalGerman" ps(16) = "wdPaperFanfoldStdGerman" ps(17) = "wdPaperFanfoldUS" ps(18) = "wdPaperFolio" ps(19) = "wdPaperLedger" ps(20) = "wdPaperNote" ps(21) = "wdPaperQuarto" ps(22) = "wdPaperStatement" ps(23) = "wdPaperTabloid" ps(24) = "wdPaperEnvelope9" ps(25) = "wdPaperEnvelope10" ps(26) = "wdPaperEnvelope11" ps(27) = "wdPaperEnvelope12" ps(28) = "wdPaperEnvelope14" ps(29) = "wdPaperEnvelopeB4" ps(30) = "wdPaperEnvelopeB5" ps(31) = "wdPaperEnvelopeB6" ps(32) = "wdPaperEnvelopeC3" ps(33) = "wdPaperEnvelopeC4" ps(34) = "wdPaperEnvelopeC5" ps(35) = "wdPaperEnvelopeC6" ps(36) = "wdPaperEnvelopeC65" ps(37) = "wdPaperEnvelopeDL" ps(38) = "wdPaperEnvelopeItaly" ps(39) = "wdPaperEnvelopeMonarch" ps(40) = "wdPaperEnvelopePersonal" ps(41) = "wdPaperCustom" PaperSizeDoc = ps(iPS) End Function
Если вы не знаете, как подключить к документу и применить этот макрос, изучите следующие заметки с сайта:
Создание макроса из готового кода
Автоматическая запись макроса
Все советы с сайта Word Expert в книге Word 2003/2007. Народные советы
Доброго времени суток уважаемые читатели блога scriptcoding.ru. В этой статье мы рассмотрим объект PageSetup, который позволяет получить или задать основные параметры страницы в текстовом редакторе Word.
Класс PageSetup содержит множество полезных свойств, хотя у него только два метода. В плане установки параметров страницы в Word мы можем задать или получить размеры, отступы для колонтитулов, ориентацию, количество строк на странице и количество символов в строке, и многое другое. Параллельно советую почитать публикацию «Коллекция Word Pages и объекты Page«.
Для начала рассмотрим теоретическую часть публикации, а далее займемся программированием. Программный код будет на языке VBSCRIPT и JSCRIPT, которые работают под управлением сервера Windows Script Host.
Содержание
- Объект PageSetup – Основные параметры страницы в Word
- Свойства – установка параметров страницы в текстовом редакторе Word
- Методы – основные параметры страницы в Word
Объект PageSetup – Основные параметры страницы в Word
Доступ к объекту можно получить через одноименное свойство таких классов как:
- Section – В данном случае мы можем обработать параметры для всех страниц в текстовом редакторе Word заданного раздела.
- Document – В данном случае мы обрабатываем установки параметров для всех страниц в Word и для всех разделов заданного документа.
Свойства – установка параметров страницы в текстовом редакторе Word
BottomMargin, TopMargin, LeftMarginи RightMargin– Свойства позволяют установить или получить значение отступа в пунктах от нижнего, верхнего, левого или правого края страницы в текстовом редакторе Word.
CharsLineи LinesPage– Установка параметров страницы в текстовом редакторе Word: количество символов в строке или количество строк на странице.
FirstPageTrayи OtherPagesTray– Свойства возвращают или устанавливают лоток для бумаги, который будет использоваться для первой страницы раздела или для всех страниц в разделе, кроме первой. Значения константы WdPaperTray:
- wdPrinterAutomaticSheetFeed — 7 — Автоматическая подача листов.
- wdPrinterDefaultBin — 0 – Лоток по умолчанию.
- wdPrinterEnvelopeFeed — 5 – Подача конвертов.
- wdPrinterFormSource — 15 — Формуляр.
- wdPrinterLargeCapacityBin — 11 – Лоток большой емкости.
- wdPrinterLargeFormatBin — 10 – Лоток большого формата.
- wdPrinterLowerBin — 2 — Нижний лоток.
- wdPrinterManualEnvelopeFeed — 6 – Ручная подача конвертов.
- wdPrinterManualFeed — 4 – Ручная подача.
- wdPrinterMiddleBin — 3 — Ближний лоток.
- wdPrinterOnlyBin — 1 – Только лоток принтера.
- wdPrinterPaperCassette — 14 — Кассета для бумаги.
- wdPrinterSmallFormatBin — 9 – Лоток маленького формата.
- wdPrinterTractorFeed — 8 — Автоматическая подача.
- wdPrinterUpperBin — 1 — Верхний лоток.
PageHeightи PageWidth– Возвращают или задают такие установки параметров страницы в текстовом редакторе Word как высоту и ширину в пунктах.
PaperSize— Возвращает или устанавливает размер бумаги. Значение константы WdPaperSize.
FooterDistanceи HeaderDistance– Свойства задают или возвращают расстояние в пунктах для нижнего или верхнего колонтитула Word.
Orientation— Возвращает или устанавливает такие основные параметры страницы в текстовом редакторе Word, как ориентацию. Значение константы WdOrientation:
- wdOrientLandscape — 1 — альбомная ориентация.
- wdOrientPortrait — 0 — книжная ориентация
ShowGrid– Свойство позволяет показать (true) или скрыть (false) сетку. Начиная с версии Word 2010.
TwoPagesOnOne– Значение true – отображаются две страницы на одном листе. Чтение и запись.
VerticalAlignment— Возвращает или задает такие установки параметров страницы в Word, как вертикальное выравнивание текста на каждой странице в текстовом редакторе или разделе. Значение константы WdVerticalAlignment:
- wdAlignVerticalTop — 0 – По верху
- wdAlignVerticalCenter — 1 – По центру
- wdAlignVerticalJustify — 2 — По ширине
- wdAlignVerticalBottom — 3 – По низу.
BookFoldPrinting– Значение true – печать документа Word в виде книги. Чтение и запись.
BookFoldPrintingSheets— Возвращает или устанавливает количество страниц для каждой книги.
BookFoldRevPrinting– Значение true — чтобы изменить порядок печати для книги. Чтение и запись.
LayoutMode— Возвращает или устанавливает параметры размещения для текущего документа. Значение константы WdLayoutMode:
- wdLayoutModeDefault — 0 — Сетка не используется чтобы выложить текст.
- wdLayoutModeGenko — 3 — Текст выложен на сетке; пользователь указывает количество строк и количество символов в строке. При печати, Microsoft Word автоматически выравнивает символы по сетке.
- wdLayoutModeGrid — 1 — Текст выложен на сетке; пользователь указывает количество строк и количество символов в строке. При печати, Microsoft Word автоматически не выровнять символы по сетке.
- wdLayoutModeLineGrid — 2 — Текст выложен на сетке; пользователь указывает количество строк, но не количество символов в строке.
MirrorMargins– Значение true, если внутренние и внешние края соседних страниц имеют одинаковую ширину. Чтение и запись.
OddAndEvenPagesHeaderFooter— Значение true, если указанный объект PageSetup имеет различные верхние и нижние колонтитулы для нечетных пронумерованных и четных пронумерованных страниц. Чтение и запись.
DifferentFirstPageHeaderFooter— Значение true, если указанный класс PageSetup имеет уникальные верхние и нижние колонтитулы для первой страницы раздела. Чтение и запись.
SectionDirection— Возвращает или устанавливает такой параметр страницы в текстовом редакторе Word, как порядок чтения и выравнивание для указанных разделов. Значение константы WdSectionDirection:
- wdSectionDirectionLtr — 1 — Отображает раздел с выравниванием по левому краю и порядок чтения влево.
- wdSectionDirectionRtl — 0 — Отображает раздел с выравниванием по правому краю и порядок чтения справа.
SectionStart— Возвращает или устанавливает такой основной параметр страницы в Word, как тип разрыва раздела для указанного класса. Значение константы WdSectionStart:
- wdSectionContinuous — 0 — Непрерывный.
- wdSectionEvenPage — 3 — Четные страницы.
- wdSectionNewColumn — 1 – Новый разрыв раздела колонки.
- wdSectionNewPage — 2 – Новый разрыв раздела страницы.
- wdSectionOddPage — 4 — Нечетные страницы.
LineNumbering— Возвращает или задает класс LineNumbering.
TextColumns— Возвращает коллекцию TextColumns.
Application — Возвращает объект Application, представляющий приложение Microsoft Word.
Методы – основные параметры страницы в Word
SetAsTemplateDefault() — Установка параметра страниц в Word по умолчанию для активного документа и всех новых документов, основанных на активном шаблоне.
With ActiveDocument.PageSetup .LeftMargin = InchesToPoints(1) .RightMargin = InchesToPoints(1) .SetAsTemplateDefault End With
TogglePortrait() — Переключение между портретной и альбомной ориентацией страницы Word для документа или раздела.
Хорошо, с теоретической частью мы закончили, теперь приступим к программированию.
Пример на языке программирования VBScript:
' ---------------------------------------------------------------------------- ' Класс PageSetup ' Основные параметры страницы в Word ' PageSetup.vbs ' ---------------------------------------------------------------------------- Option Explicit dim oWord, oDoc, oSel, i, MyText Set oWord = CreateObject("Word.Application") Set oDoc = oWord.Documents oDoc.Add() oDoc.Add() oWord.Visible = True Set oSel = oWord.Selection MyText = "Установка параметров страницы в Word. " For i=0 to 40 oSel.TypeText MyText & MyText & MyText & MyText & MyText & MyText & MyText oSel.TypeParagraph Next With oDoc(1).Sections(1).PageSetup .BottomMargin = 80 .TopMargin = 80 .LeftMargin = 80 .RightMargin = 80 .CharsLine = 40 .LinesPage = 20 .FirstPageTray = 10 .PageHeight = 700 .PageWidth = 700 .FooterDistance = 150 ' параметры страницы в текстовом редакторе .HeaderDistance = 150 .VerticalAlignment = 2 .DifferentFirstPageHeaderFooter = true End With oDoc(2).Sections(1).PageSetup.Orientation = 1 MsgBox "Изменение ориентации страницы документа " & oDoc(2).Name oDoc(2).Sections(1).PageSetup.TogglePortrait
Пример на языке программирования JScript:
// ---------------------------------------------------------------------------- // Класс PageSetup // Основные параметры страницы в Word // PageSetup.js // ---------------------------------------------------------------------------- var oWord1, oDoc1, oSel1, i, MyText1; oWord1 = WScript.CreateObject("Word.Application"); oDoc1 = oWord1.Documents; oDoc1.Add(); oDoc1.Add(); oWord1.Visible = true; oSel1 = oWord1.Selection; MyText1 = "Установка параметров страницы в Word. "; for (i=0; i<=40; i++){ oSel1.TypeText (MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1); oSel1.TypeParagraph(); } with(oDoc1(1).Sections(1).PageSetup){ BottomMargin = 80; TopMargin = 80; LeftMargin = 80; RightMargin = 80; CharsLine = 40; LinesPage = 20; FirstPageTray = 10; // параметры страницы в текстовом редакторе PageHeight = 700; PageWidth = 700; FooterDistance = 150; HeaderDistance = 150; VerticalAlignment = 2; DifferentFirstPageHeaderFooter = true; } oDoc1(2).Sections(1).PageSetup.Orientation = 1; WScript.Echo("Изменение ориентации страницы документа " + oDoc1(2).Name); oDoc1(2).Sections(1).PageSetup.TogglePortrait();
Хорошо, с теорией и программированием закончили, теперь стоит дать некоторые пояснения к программному коду. После того как мы запустим сценарий, будет создан новый текстовый документ, в цикле for (смотрите «Урок 9 по JScript — оператор цикла for» и «Урок 6 по VBScript: Циклы for…next и for each…next«) происходит вставка текста несколько раз, в том числе и вставка абзаца. Далее в блоке with происходит изменение параметров страницы в текстовом редакторе Word. Ну и все, в остальном вы и сами разберетесь.