title | keywords | f1_keywords | ms.prod | api_name | ms.assetid | ms.date | ms.localizationpriority |
---|---|---|---|---|---|---|---|
Shapes.SelectAll method (Word) |
vbawd10.chm161415190 |
vbawd10.chm161415190 |
word |
Word.Shapes.SelectAll |
2d907cfd-75ad-c29f-8ef8-85f810915ba8 |
06/08/2017 |
medium |
Shapes.SelectAll method (Word)
Selects all the shapes in a collection of shapes.
Syntax
expression.SelectAll
expression Required. A variable that represents a Shapes object.
Remarks
This method does not select InlineShape objects. You cannot use this method to select more than one canvas.
Example
This example selects all the shapes in the active document.
Sub SelectAllShapes() ActiveDocument.Shapes.SelectAll End Sub
This example selects all the shapes in the headers and footers of the active document and adds a red shadow to each shape.
Sub SelectAllHeaderShapes() With ActiveDocument.ActiveWindow .View.Type = wdPrintView .ActivePane.View.SeekView = wdSeekCurrentPageHeader End With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes.SelectAll With Selection.ShapeRange.Shadow .Type = msoShadow10 .ForeColor.RGB = RGB(220, 0, 0) End With End Sub
See also
Shapes Collection Object
[!includeSupport and feedback]
- Remove From My Forums
-
Question
-
hi all,
I want to select all shapes and text from one page in Microsoft Word,now i can do this executing a VBA script in macros,but from shapes it can’t select inline shapes,i have to make all shapes inline,and i don’t
want to do this.what should i do to select all shapes and text in one page including shapes which aren’t inline?
i really appreciate your help.
Best Regards.
Elmira Frhn
Answers
-
Assuming the selection is already on the page of interest:
Selection.GoTo what:=wdGoToBookmark, Name:=»page»Alternatively, if you haven’t yet selected the page:
Dim Rng As Range, i As Long
i = CLng(InputBox(«Please input the page #»))
Set Rng = ActiveDocument.GoTo(What:=wdGoToPage, Name:=i)
Set Rng = Rng.GoTo(What:=wdGoToBookmark, Name:=»page»)
Rng.SelectNote: In each case the floating shapes don’t get highlighted. That’s of no consequence as their anchors get selected anyway.
Cheers
Paul Edstein
[MS MVP — Word]-
Marked as answer by
Monday, November 4, 2013 1:27 AM
-
Marked as answer by
Борис интересуется:
Как программно выделить все обьекты Shapes, например, прямоугольники, находящиеся на определённой странице документа Word?
Борис, вот пример макроса, выделяет все графические объекты shapes во всем документе:
Sub selectAllShapes() ActiveDocument.Shapes.SelectAll End Sub
Если надо выделить только на определенной странице, то можно использовать такой код:
Sub selectAllShapesFromPartPage() 'Выделение всех графических объектов на определенной странице Dim MyRange As Range Set MyRange = ActiveDocument.Range(0, 0) 'начало диапазона Set MyRange = MyRange.GoTo(What:=wdGoToPage, Name:="3") 'задаем номер страницы Set MyRange = MyRange.GoTo(What:=wdGoToBookmark, Name:="page") 'переходим к заданной странице MyRange.ShapeRange.Select 'выделяем все spahes на данной странице End Sub
Если вы не знаете, как подключить к документу и применить этот макрос, изучите следующие заметки с сайта:
Создание макроса из готового кода
Автоматическая запись макроса
UPDATE1 — Removed (only works on inline shapes)
UPDATE2 — Removed (only works on inline shapes)
UPDATE3 — Removed (Delete using the Shape’s Name not necessary the right Shape as they can all be the same)
UPDATE4 — Check and Delete using Shape’s ID.
To delete the top and bottom shapes of all the pages (be it inline with text or floating). Code below checks for the real Top Left (TL) corner and Bottom Right (BR) corner of the shape when you select it. E.G. The Block Arc here is the considered the Bottom shape instead of the Left Bracket.
If only the TL is of concern, then remove the lines x2 = x1 + ...
and y2 = y1 + ...
and replace all y2
with y1
, x2
with x1
in the if end if
blocks.
Sub DeleteAllTopBottomShapes()
On Error Resume Next
Dim aShapeTopID() As Variant ' ID of shape to delete with min vertical location
Dim aShapeBottomID() As Variant ' ID of shape to delete with max vertical location
Dim aShapeMinX() As Variant ' position of shape (min horizontal location)
Dim aShapeMinY() As Variant ' position of shape (min vertical location)
Dim aShapeMaxX() As Variant ' position of shape (max horizontal location)
Dim aShapeMaxY() As Variant ' position of shape (max vertical location)
Dim x1 As Single, y1 As Single ' x and y-axis values (top left corner of shape)
Dim x2 As Single, y2 As Single ' x and y-axis values (bottom right corner of shape)
Dim i As Long, n As Long ' counters
Dim oSh As Shape
'Application.ScreenUpdating = False
' Prepare arrays
n = ActiveDocument.ComputeStatistics(wdStatisticPages) - 1
ReDim aShapeTopID(n)
ReDim aShapeBottomID(n)
ReDim aShapeMinX(n)
ReDim aShapeMinY(n)
ReDim aShapeMaxX(n)
ReDim aShapeMaxY(n)
' Preset the minimum axis values to max according to the pagesetup
For i = 0 To n
aShapeMinX(i) = ActiveDocument.PageSetup.PageHeight
aShapeMinY(i) = ActiveDocument.PageSetup.PageWidth
Next
' Search for the top and bottom shapes
For Each oSh In ActiveDocument.Shapes
With oSh.Anchor
i = .Information(wdActiveEndAdjustedPageNumber) - 1
x1 = .Information(wdHorizontalPositionRelativeToPage) + oSh.Left
y1 = .Information(wdVerticalPositionRelativeToPage) + oSh.Top
x2 = x1 + oSh.Width
y2 = y1 + oSh.Height
End With
Application.StatusBar = "Checking Shape """ & oSh.Name & """ (ID: " & oSh.ID & ") on Page " & i + 1 & " TL:(" & x1 & ", " & y1 & ") BR:(" & x2 & ", " & y2 & ")"
Debug.Print "Pg." & i + 1 & vbTab & "(ID:" & oSh.ID & ") """ & oSh.Name & """" & vbTab & "TL:(" & x1 & ", " & y1 & ") BR:(" & x2 & ", " & y2 & ")"
' Check for Top Left corner of the Shape
If y1 < aShapeMinY(i) Then
aShapeMinY(i) = y1
aShapeMinX(i) = x1
aShapeTopID(i) = oSh.ID
ElseIf y1 = aShapeMinY(i) Then
If x1 < aShapeMinX(i) Then
aShapeMinX(i) = x1
aShapeTopID(i) = oSh.ID
End If
End If
' Check for Bottom Right corner of the Shape
If y2 > aShapeMaxY(i) Then
aShapeMaxY(i) = y2
aShapeMaxX(i) = x2
aShapeBottomID(i) = oSh.ID
ElseIf y2 = aShapeMaxY(i) Then
If x2 > aShapeMaxX(i) Then
aShapeMaxX(i) = x2
aShapeBottomID(i) = oSh.ID
End If
End If
Next
Debug.Print
' Delete the Top and Bottom shapes
For i = 0 To n
If Not IsEmpty(aShapeTopID(i)) Then
For Each oSh In ActiveDocument.Shapes
If oSh.ID = aShapeTopID(i) Then
Application.StatusBar = "Deleting Top shape """ & oSh.Name & """ (ID: " & aShapeTopID(i) & ") on page " & i + 1
Debug.Print "Deleting Top shape """ & oSh.Name & """ (ID: " & aShapeTopID(i) & ") on page " & i + 1
oSh.Delete
Exit For
End If
Next
End If
If Not IsEmpty(aShapeBottomID(i)) Then
For Each oSh In ActiveDocument.Shapes
If oSh.ID = aShapeBottomID(i) Then
Application.StatusBar = "Deleting Bottom shape """ & oSh.Name & """ (ID: " & aShapeBottomID(i) & ") on page " & i + 1
Debug.Print "Deleting Bottom shape """ & oSh.Name & """ (ID: " & aShapeBottomID(i) & ") on page " & i + 1
oSh.Delete
Exit For
End If
Next
End If
Next
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub
I checked that the ID does not change when a Shape is added or Deleted.
Screenshot of test doc (wicked it so all «Lightning Bolts» are the Top and Bottom):
After executed once (all the «Lightning Bolt» shapes are deleted):
After 2nd execute (the Explosion Shape is still there but position is out of the page’s dimension — this is what floating shapes do, its actual position is relative to the Anchor):
Microsoft Word provides features to select multiple objects in Microsoft Word document. This article explains how to select multiple objects or shapes in the MS Word Document.
Microsoft Office 2010
Step (1). Open Microsoft Word 2010 document.
Step (2). Select multiple objects by holding Ctrl key down and mouse click on objects. This way we can select multiple objects.
If your document have so many overlapped objects, it is bit difficult to select them using mouse. Instead of this, you can select the multiple objects from Selection Pane. Following steps explain how to select multiple objects using Selection Pane.
Step (1). Click on Home tab and select Select item under Editing section. It will display a sub-menu.
Step (2). In sub-menu select Selection Pane… menu item. It will display Selection and Visibility window/pane. It will display the shapes on the current page.
Step (3). You can select multiple objects/shapes by holding Ctrl key down and mouse click on objects/shapes in the Selection and Visibility pane/window.
Another way of selecting multiple objects is by dragging the mouse over the objects with in the mouse dragged area. This is simple and easy to use feature. This feature was available in earlier versions of MS Word 2010. At the time of writing this article this feature is not available in MS Word 2010. Strange!
Following steps achieve this by converting the MS Word 2010 document to Word 97 – 2003 document type.
Step (1). Open Microsoft Word 2010 document.
Step (2). Save As the document to Word 97-20013 document type. The document may loose some of the features supported in Word 2010 document format. Be careful while converting the document to old format.
Step (3). Click on Home tab. It will display Home tab items.
Step (4). Select Select item under Editing section. It will display a sub-menu.
Step (5). In sub-menu select Select Objects menu item. This is a check menu item. Means if you click on Select Objects menu item on first time; Microsoft Word will enable you to select multiple objects. If you click on second time on Select Objects menu item; it will disable you to select multiple objects.
Step (6). Now drag your mouse pointer (by pressing left mouse button) over the objects you want to select.
Step (7). The objects which are there in the mouse dragged area will be selected and you can do operations on multiple selected objects or shapes.
by Code Steps
Если вы хотите применить один тип формы ко всем фигурам в документе, первое и самое важное — это выбрать все фигуры в документе. Нет простого способа быстро выделить все фигуры в документе, но с Kutools for WordАвтора Выбрать фигуры Утилита, вы можете быстро выбрать все формы в документе одним щелчком мыши.
Выделить все готовые / рисованные фигуры в документе
Нажмите Кутулс > Формы. Смотрите скриншот:
Выделить все готовые / рисованные фигуры в документе
Если вы хотите выбрать все готовые / рисованные фигуры, как показано на скриншоте ниже, вы можете быстро сделать это следующим образом:
1. Активируйте документ, в котором вы хотите выделить все фигуры чертежа, а затем примените утилиту, нажав Кутулс > Формы.
2. После нажатия Формы, появится окно подсказки, чтобы напомнить вам, сколько фигур будет выбрано, см. снимок экрана:
3. Затем щелкните OK , вы увидите, что все фигуры в текущем документе были выбраны. Смотрите скриншоты:
Это только один из инструментов Kutools for Word
Kutools for Word освобождает от выполнения трудоемких операций в Word;
С наборами удобных инструментов для Word 2021 — 2003 и Office 365;
Простота использования и установки в Windows XP, Windows 7, Windows 8/10/11 и Windows Vista;
Дополнительные функции | Скачать бесплатно | Купить
Комментарии (0)
Оценок пока нет. Оцените первым!
Hello pros,
I need your insights
This is following a former thread of mine, regarding Shapes in headers.
What I’m trying to do now is to select them all and convert them to inline shape.
Cause at times, when I’ve converted a PDF to Word, it gives me a bunch of different types of Textboxes in headers and at times footers.
I have a wonderful Script to extract the content of the Headers, however, if in other than Inline or if they are different, it or they get’s deleted. So I loose my texts.
My Test, in a Header, I’ve put a 7 Text box (1 under each other), for every Wrape Type there is. In this test, it’s the only Header, so Primary. It might be different in live documents though.
I found a script but modified it, cause I got an error message on the line of Convert to InlineShape. Maybe because a Shape was already Inline Shape, so the reason i’ve added, if wrapType is not inline, then convert to inline. Now I’m getting NO errors but it doesn’t do anything
Code:
Dim oSec As Section Dim oHftr As HeaderFooter Dim i As Integer Dim oShp As Shapes For Each oSec In ActiveDocument.Sections For Each oHftr In oSec.Headers If oHftr.Exists Then For i = oHftr.range.ShapeRange.Count To 1 Step -1 If oShpWrapType <> wdWrapMergeInline Then oHftr.range.ShapeRange.ConvertToInlineShape End If Next i End If Next oHftr Next oSec On Error GoTo 0
So either this can be fixed or have a way to Select all Shapes/textboxes in all Headers, so I can modify it manually in one shot, instead of manually changing them one at the time.
Am I asking the impossible you think?
Any advice, or insights would be sooooo greatly be appreciated
Cendrinne
Доброго времени суток всем читателям и подписчикам блога scriptcoding.ru. В этой статье мы рассмотрим работу с коллекцией Shapes, которая позволяет добавлять различные графические объекты в Word документ.
По сути, используя методы данной коллекции, мы можем делать вставку таких графических объектов в Word как авто-фигуры, выноски, рисунки, диаграммы, полотна и многое другое. Также стоит уточнить, что по ходу статьи, под словом «фигура» будут подразумеваться все графические Word объекты (полотно, WordArt, SmartArtи так далее). Я не привожу примеров программного кода, самим программированием мы займемся, когда будет изучать по отдельности работу с каждым графическим объектом Word, которые создаются с помощью коллекции Shapes.
Содержание
- Коллекция Shapes – графические объекты в Word
- Shapes – свойства, работа с графическими объектами Word
- Shapes — методы, создание графических объектов в Word
Коллекция 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, строка, которая определяет имя фигуры, или массив, содержащий целые числа или строки. Например:
ActiveDocument.Shapes.Range(Array("Oval 5", "Rectangle 4")).Select
SelectAll() — Выбирает все графические объекты в Word в коллекции Shapes. Этот метод не выбирает классы InlineShape. Вы не можете использовать этот метод, чтобы выбрать более одного полотна.
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 размещается автоматически.