Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba word shapes

Коллекция Word Shapes – работа с графическими объектами

Доброго времени суток всем читателям и подписчикам блога scriptcoding.ru. В этой статье мы рассмотрим работу с коллекцией Shapes, которая позволяет добавлять различные графические объекты в Word документ.

По сути, используя методы данной коллекции, мы можем делать вставку таких графических объектов в Word как авто-фигуры, выноски, рисунки, диаграммы, полотна и многое другое. Также стоит уточнить, что по ходу статьи, под словом «фигура» будут подразумеваться все графические Word объекты (полотно, WordArt, SmartArt и так далее). Я не привожу примеров программного кода, самим программированием мы займемся, когда будет изучать по отдельности работу с каждым графическим объектом Word, которые создаются с помощью коллекции Shapes .

Коллекция Shapes – графические объекты в Word

Shapes – свойства, работа с графическими объектами Word

Count — Возвращает количество фигур в коллекции.

Shapes — методы, создание графических объектов в Word

Основной функционал коллекции заключается в ее методах, большинство из которых будут возвращать класс Shape, а тот в свою очередь, будет предоставлять нужные свойства для конкретной фигуры. Например, мы добавили новое полотно в документ, для обработки данного полотна используется свойство CanvasItems , которое хранит ссылку на CanvasShapes. При добавлении новой линии в документ, нам нужно обратиться к свойству Line , которое хранит ссылку на класс LineFormat, который отвечает за обработку линий. И так далее, это логично, так как у каждого графического объекта в Word, например, выноски и WordArt есть различные возможности.

AddCanvas (Left, Top, Width, Height, Anchor) — Добавляет новое полотно в документ.

Anchor – Содержит ссылку на класс Range, который представляет текст, к которому нужно привязать полотно.

AddSmartArt (Layout, Left, Top, Width, Height, Anchor) – Вставка таких графических объектов Word в активный документ, как рисунок SmartArt. Начиная с версии Word 2010.

Layout – Ссылка на класс SmartArtLayout.

AddCallout (Type, Left, Top, Width, Height) – Добавляет текстовую выноску с линиями.

Type – Данный параметр определяет тип линии. Значения константы MsoCalloutType:

  • msoCalloutOne — 1 – Горизонтальная линия слева.
  • msoCalloutTwo — 2 – Горизонтальна линия с наклоном лева.
  • msoCalloutThree — 3 – Линия состоит из двух отрезков слева (один отрезок с наклоном, а другой горизонтальный).
  • msoCalloutFour — 4 — Линия состоит из трех отрезков справа (один отрезок с наклоном, другой горизонтальный и третий вертикальный).

AddLine (BeginX, BeginY, EndX, EndY) – Рисует линию с указанными начальными и конечными координатами.

AddConnector (Type, Left, Top, Width, Height) – Рисует соединительную линию.

Type – Тип линии, значение константы MsoConnectorType:

  • msoConnectorStraight — 1 — Прямая линия.
  • msoConnectorElbow — 2 – Прямое колено.
  • msoConnectorCurve — 3 – Изогнутое колено.
  • msoConnectorTypeMixed — -2 – Смешанные значения.

AddShape (Type, Left, Top, Width, Height) – Вставка графических объектов в Word, которые представляют указанную автофигуру.

Type – Определяет тип фигуры, значение константы MsoAutoShapeType.

AddPicture (FileName, LinkToFile, SaveWithDocument, Left, Top, Width, Height) — Добавляет изображения. Возвращает класс Shape, представляющий картинку и добавляет ее в коллекцию CanvasShapes. Обязательный только первый параметр.

FileName – Путь к файлу и его имя.

LinkToFile – True – привязать изображение к файлу, из которого он был создан. False – сделать изображение независимым от файла, по умолчанию.

SaveWithDocument – True — сохранить связанный рисунок с документом. Значение по умолчанию False. Если использовать значение False, то может возникнуть ошибка. Работа с графическими Word объектами.

AddLabel (Orientation, Left, Top, Width, Height) — Добавляет текстовую область.

Orientation – Задает ориентацию текста. Значение константы MsoTextOrientation:

  • msoTextOrientationHorizontal — 1 — Горизонтальная.
  • msoTextOrientationUpward — 2 – Направление вверх.
  • msoTextOrientationDownward — 3 – Направление вниз.
  • msoTextOrientationVerticalFarEast — 4 – Вертикальное направление для азиатских языков.
  • msoTextOrientationVertical — 5 – Направление вниз.
  • msoTextOrientationHorizontalRotatedFarEast — 6 — Горизонтальное направление для азиатских языков.

AddTextbox (Orientation, Left, Top, Width, Height) — Добавляет текстовое поле.

AddTextEffect (PresetTextEffect, Text, FontName, FontSize, FontBold, FontItalic, Left, Top) – Создание графического объекта WordArt в Word.

PresetTextEffect – Определяет эффект текста WordArt. Значение константы MsoPresetTextEffect.

Text — Текст в WordArt.

FontName — Название шрифта, используемого в WordArt.

FontSize — Размер шрифта в пунктах.

FontBold – Содержит логическое значение, определяющее, нужно ли сделать шрифт жирным (true) или нет (false).

FontItalic — Содержит логическое значение, определяющее, сделать шрифт курсивом (true) или нет (false).

Item (index) — Возвращает отдельный класс Shape в коллекции Shapes по его индексу.

Range (index) — Возвращает ShapeRange, представляющий графические объекты в Word внутри заданного диапазона. Данный метод позволяет выбрать несколько графических Word объектов для будущей их группировки или обработки.

Index — Указывает, какие графические объекты Word должны быть включены в указанный диапазон. Может быть целое число, указывающее порядковый номер фигуры в коллекции Shapes, строка, которая определяет имя фигуры, или массив, содержащий целые числа или строки. Например:

SelectAll () — Выбирает все графические объекты в Word в коллекции Shapes. Этот метод не выбирает классы InlineShape. Вы не можете использовать этот метод, чтобы выбрать более одного полотна.

Читать еще:  Vba адрес выделенной ячейки

AddPolyline (SafeArrayOfPoints) — Добавляет открытый или закрытый полигон. Возвращает Shape, который представляет многоугольник и добавляет его в коллекцию CanvasShapes.

SafeArrayOfPoints — Массив с парами координат, которые определяют вершины и контрольные точки кривой.

AddCurve (SafeArrayOfPoints) — Возвращает Shape, который представляет кривую Безье.

BuildFreeform (EditingType, X1, Y1) – Создание свободного графического объекта в Word, вернет класс FreeformBuilder. По сути, данный метод позволяет добавить только первый узел будущей фигуры, а уже далее нужно использовать функционал класса FreeformBuilder.

EditingType – Свойства узла. Значение константы MsoEditingType:

  • msoEditingAuto — 0 – Подключение узла.
  • msoEditingCorner — 1 — Угловой узел.
  • msoEditingSmooth — 2 — Гладкий узел.
  • msoEditingSymmetric — 3 — Симметричный узел.

X1 и Y1— Определяют положение узла в пунктах.

AddChart (Style, Type, Left, Top, Width, Height, Anchor, NewLayout) — Добавляет диаграмму в документе.

Style — Стиль диаграммы, целое значение

Type — Тип диаграммы, значение константы XlChartType.

Left – Положение диаграммы в пунктах от левого края.

Top — Положение диаграммы в пунктах от верхнего края.

Width и Height — Ширина и высота в пунктах.

Anchor – Диапазон, который будет связан с графическим объектом в Word.

NewLayout — Если значение true, то график будут вставлен с помощью новых динамические правил форматирования.

AddOLEControl (ClassType, Range) – Добавляет в документ элемент управления ActiveX (ранее известный как элемент управления OLE). Возвращает InlineShape, представляющий новый элемент управления ActiveX. Чтобы изменить свойства элемента управления ActiveX, можно использовать свойство Object класса OLEFormat для заданной фигуры.

ClassType — Данный параметр принимает строковое значение, которое содержит имя элемента управления ActiveX. Например:

  • CheckBox — «Forms.CheckBox.1».
  • ComboBox — «Forms.ComboBox.1».
  • CommandButton — «Forms.CommandButton.1».
  • Frame — «Forms.Frame.1».
  • Image — «Forms.Image.1».
  • Label — «Forms.Label.1».
  • ListBox — «Forms.ListBox.1».
  • MultiPage — «Forms.MultiPage.1».
  • OptionButton — «Forms.OptionButton.1».
  • ScrollBar — «Forms.ScrollBar.1».
  • SpinButton — «Forms.SpinButton.1».
  • TabStrip — «Forms.TabStrip.1».
  • TextBox — «Forms.TextBox.1».
  • ToggleButton — «Forms.ToggleButton.1».

Range — Диапазон, в котором нужно разместить элемент управления ActiveX. Если этот аргумент опущен, то ActiveX размещается автоматически.

Спасибо за внимание. Автор блога Владимир Баталий

Значения стандартных типов графических объектов Shape в VBA

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщений [ 1 ]

1 Тема от Alex_Gur 19.03.2014 08:58:48

  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Тема: Значения стандартных типов графических объектов Shape в VBA

Информация приводится по источнику: внешняя ссылка
Применимо для Excel и для Word.

Пример обращения к типу графического объекта:

Наименование параметра – Значение — Описание
————————————————
msoAutoShape — 1 — AutoShape.
msoCallout — 2 — Callout.
msoCanvas — 20 — Canvas.
msoChart — 3 — Chart.
msoComment — 4 — Comment.
msoDiagram — 21 — Diagram.
msoEmbeddedOLEObject — 7 — Embedded OLE object.
msoFormControl — 8 — Form control.
msoFreeform — 5 — Freeform.
msoGroup — 6 — Group.
msoIgxGraphic — 24 — SmartArt graphic
msoInk — 22 — Ink
msoInkComment — 23 — Ink comment
msoLine — 9 — Line
msoLinkedOLEObject — 10 — Linked OLE object
msoLinkedPicture — 11 — Linked picture
msoMedia — 16 — Media
msoOLEControlObject — 12 — OLE control object
msoPicture — 13 — Picture
msoPlaceholder — 14 — Placeholder
msoScriptAnchor — 18 — Script anchor
msoShapeTypeMixed — -2 — Mixed shape type
msoTable — 19 — Table
msoTextBox — 17 — Text box
msoTextEffect — 15 — Text effect

Сообщений [ 1 ]

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Вы можете помочь в развитии сайта, сделав пожертвование:

Или помочь сайту популярной криптовалютой:

BTC Адрес: 1Pi3a4c6sJPbfF2sSYR2noy61DMBkncSTQ

ETH Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634

LTC Адрес: LUyT9HtGjtDyLDyEbLJZ8WZWGYUr537qbZ

DOGE Адрес: DENN2ncxBc6CcgY8SbcHGpAF87siBVq4tU

BAT Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634

XRP Адрес: rEb8TK3gBgk5auZkwc6sHnwrGVJH8DuaLh Депозит Tag: 105314946

USDT (ERC-20) Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634

Яндекс Деньги: 410013576807538

Вебмани (R ещё работает): R140551758553 или Z216149053852

А тут весь список наших разных крипто адресов, может какой добрый человек пожертвует немного монет или токенов — получит плюсик в карму от нас 🙂 Благо Дарим, за любую помощь!

Похожие темы

Значения стандартных типов графических объектов Shape в VBA

Большинство россиян работает с текстами в Ворде. Если у вас появилась необходимость в нестандартных шаблона или макросах для Microsoft Word, а также нужна консультация по настройкам текстового редактора, оптимальным решениям для различных функций, то все это вы можете найти на сайте Ворд Эксперт и форуме сайта. Наш сайт о Microsoft Office Word даст ответ про: как создать оглавление в ворд.

Форум имеет структуру, включающую главные и вспомогательные рубрики. В главных подфорумах выделен раздел, в котором собраны особенно часто встречающиеся вопросы и проблемы (например, устранение двойных пробелов). Наш сайт о Microsoft Office Word даст ответ про: не открывается майкрософт ворд 2007. Там же вы найдете информацию по навигации самого форума и сайта и дополнительные источники, связанные с Вордом и программированием. На портале о Microsoft Office Word вы узнаете про: язык документа в word.

Большое внимание уделено настройками в различных версиях, форматированию и оформлению текстов в Ворде. На портале о Microsoft Office Word вы узнаете про: ворд 2007 количество знаков. Еще один подраздел полностью посвящен автоматизации (макросы, шаблоны, различные пути ускорения механических операций при работе с текстом и многое другое). На портале о Microsoft Office Word вы узнаете про: ворд 2001 флажок. Также есть подфорум, в котором участники предлагают готовые варианты решений разных проблем. Существует возможность оставить заявку. Наш сайт о Microsoft Office Word даст ответ про: цщкв ntrcn dthnbrfkmyj.

Читать еще:  Как сделать адрес в инстаграмме

Свои отзывы, предложения, замечания по форуму вы можете оставлять в соответствующем подразделе. Для общих вопросов предусмотрена «Курилка». На портале о Microsoft Office Word вы узнаете про: где в word рисунки.

Как сохранить фигуры Word в изображении с помощью VBA?

У меня есть простое требование сохранить объекты чертежей MS-Office, встроенные в Word Doc, в файлы изображений. Следующий код работал для извлечения изображений из Powerpoint. Однако он не работает для MS-Word, если я изменяю ActivePresentation в ActiveDocument. Метод экспорта недоступен для объекта формы. Есть идеи?

Код, который вы пытаетесь скопировать из PPT VBA в Word VBA, не будет работать, потому что функциональность не существует в Word.

Вы можете попробовать сами: когда вы выбираете фигуры в Word и щелкните правой кнопкой мыши, у вас нет функции Save as image. (в отличие от PPT у вас есть функция).

Тем не менее, с этой страницы автор указывает на MVP, который построил решение VBA, чтобы делать то, что вы хотите: http://www.lebans.com/msword.htm

Надеюсь, он будет делать то, что вы хотите,

Это не очень удобно, поскольку он выводит каждое изображение в формате EMF, но он записывает каждое изображение в коллекции встроенных фигур в отдельный файл. Разумеется, это можно было бы изменить, чтобы сделать другую коллекцию фигур.

Я хотел бы усилить запись JPG напрямую, но до сих пор не знаю, как VBA выводит WRITE-выход через фильтр по пути. Поэтому, чтобы использовать эти файлы, вам нужно запустить некоторый внешний пост-процесс/пакет, чтобы скрывать файлы из EMF в нечто более пригодное для использования.

Вот один грязный (и самый быстрый) трюк, о котором я могу думать: D

Сохраните документ Word во временную папку как веб-страницу. Что-то вроде

Все фигуры и изображения в документе документа будут автоматически сохранены в папке C:TempSample_Files

Затем вы просто удаляете все файлы в этой папке, которые не являются изображениями 🙂

Дайте мне знать, хотите ли вы воспользоваться этим вариантом 🙂

РЕДАКТИРОВАТЬ

Боже, я только понял, что это старая нить. Хмм, все благодаря «Joel Coehoorn» для редактирования этой темы LOLZ

Хорошо, это не решение, а другой подход к старой проблеме. До сих пор я сталкивался с множеством примеров, которые либо сохраняют файл в.HTML, а затем захватывают изображения из подпапки документа HTML или кода, который извлекает архив документа, а затем захватывает файлы из извлеченного набора.

Как насчет этого:

Итерации через встроенные формы документа, если вы находитесь в Word.

Для каждой строки:

а. Скопируйте данные изображения в буфер обмена. У вас уже есть другие метаданные изображения, так как вы получили его через объектную модель в VBA.

б. Вы можете скопировать изображение, например, в первую строку Inline Shape:

с. Теперь, когда данные изображения находятся в буфере обмена, должно быть возможно получить данные из буфера обмена. Я знаю, что VBA отстой с этим, но вы должны иметь возможность использовать Windows API, чтобы обойти это. Если вы можете каким-то образом вернуть данные изображения, вы можете записать их в файл с метаданными, полученными из объектной модели.

Методика программирования векторной графики в объектно–ориентированных средах. Рисование в VBA

Методика программирования векторной графики в объектно – ориентированных средах. Рисование в VBA

(kiguryev@google.com)
Педагогический институт ГОУ ВПО
«Саратовский государственный университет имени »

Рисование в VBA осуществляется путём использования объектов векторной графики Micro Soft Office(MSO). Графические фигуры представляенные на панели рисования МSО, образуют в VBA семейство объектов Shapes[1, 2]. Для рисования используются варианты метода добавления объектов этого семейства – Add: AddLine – добавить линию AddCurve – кривую,, AddPolyLine – полилинию, а также AddShape — фигуру.

Использование отрезков прямой

Добавление отрезка прямой линии выполняется командой:

ActiveDocument. Shapes. AddLine X1, Y1, X2, Y2

Здесь – ActiveDocument – активный документ — контейнер, в который добавляется линия, это имя можно опускать в специализированных модулях предназначенных для работы с документами в Word– ThisDocument, рабочими лиcтами в Excel — Лист1, и т. п. В исполняемых модулях, создаваемых пользователем указание на корневой контейнер — обязательно. Shapes –имя коллекции фигур, X1, Y1, X2, Y2 — горизонтальные и вертикальные координаты начальной и конечной точек отрезка прямой, соответственно. Единица измерения этих расстояний точка — point = 1/72 дюйма, сокра­щенно — pt. Коллекция фигур выступает в этой команде в качестве свойства документа и поэтому её имя присоединяется к имени ActiveDocument пос­редством точки.

Начало системы координат, используемой в графике в большинстве случаев находится в левом верхнем углу документа. Таким образом, горизонтальная ось Х направлена слева направо, а вертикальная Y – сверху – вниз.

Читать еще:  Как очистить адресную книгу

создадим из 3-х отрезков прямоугольный треугольник. Эту задачу решает программа:

With ActiveDocument. Shapes

‘прямая между точкой (120, 100) и точкой (220, 100)

‘Теперь, — между (120, 100) и (170, 50)

‘Наконец, — между (170, 50) и (220, 100)

Здесь для уменьшения текста программы использован оператор With End With -присоединяющий имена методов добавления линии AddLine и группировки фигур 1, 2, 3, составляющих область :
.Range(Array(1, 2, 3)).Group.

Рисованию ломаной, также как и кривой должно предшествовать создание двухстолбцового массива координат узлов — коорд_верш, в первую колонку которого помещаются координаты x, а во вторую — y. Элементы этого массива должны быть типа– single.

Инструкция для рисования кривой использует метод AddPolyline и записывается в форме:

Нарисуем узор вида:

Dim коорд_верш(33, 1 To 2) As Single

‘расстояние между основаниями “грибков”

‘построим массив координат вершин

коорд_верш(0, 1) = 100: коорд_верш(0, 2) = 200

‘Рассчитываем координаты вершин 4-х “грибков”

коорд_верш(1 + i * 8, 1) = коорд_верш(0 + i * 8, 1) + x

Создание массива узлов кривой осуществляется так же, как и для полилинии , но число его строк определяется формулой 3n+1, где n – целое число. Это связано с тем, что вся кривая разбивается на участки, каждый из которых состоит из 3 сегментов кривой Безье, ограниченных 4 узлами. Обозначим радиус – векторы этих узлов как Ri(xi ,yi), где i=0,1,2,3. Тогда по определению кривой Безье уравнения этого участка линии записывает­ся в виде:

Здесь 0 ≤ t ≤ 1. Такая линия является приближенной гладкой кривой, проходящей через крайние точки с номерами 0 и 3. Узлы с номерами 1 и 2 – вспомогательные – они определяют наклон касательных в её начале и конце. Сама кривая через них не проходит.

В качестве примера используем предыдущую программу, в которой заменим AddPolyline на AddCurve . Получаем кривую, представленную на рисунке.

№ 1 Используя метод AddLine, построить прямоугольник с горизонтальными и вертикальными сторонами. Высота – 120, Ширина 200. Преобразовать эту программу в процедуру с параметрами.

№ 2 Используя метод AddLine, построить силуэт домика. с окном и дверью. Выполнить задачу, воспользовашись результатами задачи №1.

№ 3 Используя координаты вершин из задачи 2, построить силуэт домика с помощью метода вставки ломаной — AddPolyline.

№ 4 Используя методы AddLine и AddPolyline, построить график синуса. Для этого рассчитываются уравнения концов отрезков по формулам:
,
где t – параметр, L, А, X и Y – постоянные масштабирования.

№ 5 Используя методы AddLine и AddPolyline, построить эллипс. Для этого рассчитываются уравнения вершин отрезков ломаной по формулам:

№ 6 Используя методы AddLine и AddPolyline, построить кривую, заданную уравнениями:

Значения константы d выбрать равными 2с, 3с,

№ 7 Выполнить задачи 4, 5, 6, построив кривые Безье.

№ 8 Построить правильный n-угольник, вписанный в окружность радиуса R. Радиус окружности и число вершин задаётся пользователем.

Использование объекта FreeformBuilder — построителя свободных форм для рисования кривых

Объект FreeformBuilder — построитель свободных форм используется в приложениях МSO на панели рисования как карандаш для создания рисованных кривых. Этим инструментом можно воспользоваться для тех же целей и в среде VBA.

Алгоритм рисования имеет совершенно естественный порядок действий: вначале ставится первый узел кривой, который может иметь тип авто — или углового узла:

Здесь BuildFreeform метод коллекции фигур – Shapes, создающий с помощью построителя свободных форм FreeformBuilder объекты коллекции Shapes. ТипРедактирования – свойство редактирования первого узла: – msoEditingAuto или msoEditingCorner, x и y горизонтальная и вертикальная координаты этого узла, измеренные в точках — pt. Константы целого типа msoEditingAuto и msoEditingCorner равны 0 и 1, соответственно.

Затем последовательно друг за другом рассчитываются положения остальных узлов кривой c помощью соответствующих функций fx и fy, например:

и добавляются узлы соответствующих типов с помощью метода AddNodes. Тем самым последовательно добавляются сегменты кривой вплоть до конечного узла.

Здесь ТипСегмента принимает два значения 0 и 1, которые могут представляться константами — msoSegmentLine и msoSegmentCurve, соответственно. В случае если ТипРедактирования = 0, то точки P и R в этой команде не используются, а точка Q является конечной точкой создаваемого сегмента. Когда ТипРедактирования = 1 — точки Q, P, R – являются начальной, промежуточной и конечной для текущего сегмента кривой Безье. При построении линий, описываемых непрерывными, гладкими функциями предпочтительнее добавлять на кривую авто узлы.

В заключение, полученное математическое описание кривой преобразуется в фигуру методом построителя свободных форм –

Представим пример построения синусоиды с амплитудой в 30 точек.

Dim i As Byte, x As Single, y As Single, x0 As Single

Dim qx As Single, qy As Single

With Shapes. BuildFreeform(msoEditingCorner, x, y)

qy = y + 30 * Sin( x0 * i)

.AddNodes msoSegmentCurve, msoEditingAuto, qx, qy

Узлы являются объектами, образующими семейство Nods, нумерация которых начинается с 0. Свойствами каждого угла являются типы редактирования и сегмента. Среди методов семейства наиболее интересен SetPosition(№ узла, координатаX, координатаY) – позволяющий изменять положение узла.

№ 9 С помощью построителя свободных форм построить кривые из задач 5, 6

№ 10 С помощью построителя свободных форм построить кривые из задачи 7.

№ 11 Построить спираль, уравнения которой имеют вид:
, где a, c –константы,0 Подпишитесь на рассылку:

Ссылка на основную публикацию
Adblock
detector