Как выбрать изображение, которое было просто вставлено в MS Word через VBA - PullRequest
4 голосов
/ 03 октября 2011

Просто вставил изображение в MS Word в VBA, используя следующее

wordApp.Selection.PasteSpecial DataType:=wdPasteMetafilePicture, Placement:=wdInLine

Я думаю переместить один символ влево и затем выбрать следующий объект, но я не знаю, как это сделать.

EDIT:

Хорошо, вот некоторые разработки кодирования, используя следующую строку, я смог выбрать абзац, который включает изображение, но я не могу манипулировать им, потому что он выбирает диапазон. Кто-нибудь знает, как я могу закрепить изображение внутри выделения?

wordApp.Selection.Expand wdParagraph

Ответы [ 5 ]

1 голос
/ 04 октября 2011

Вот что я использовал:

wordApp.Selection.Find.Execute replace:=2
wordApp.Selection.Expand wdParagraph
wordApp.Selection.InlineShapes(1).Select
0 голосов
/ 04 августа 2017

Вы можете просто отметить элемент слева от позиции курсора:

Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
0 голосов
/ 04 августа 2016

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

Я использую следующее:

Dim pShape as InLineShape' The shape i'm looking for
Dim iShape as InlineShape

For Each iShape In ActiveDocument.InlineShapes
    If iShape.AlternativeText = "" Then
        Set pShape = iShape
        pShape.AlternativeText = "old"
        Exit For
    End If
Next

Не очень чисто, но в VBA всегда одинаково.

0 голосов
/ 01 июля 2013

Я тоже делал то же самое.Кажется, что после вставки изображения в слово его уже выбрали.Вы можете просто использовать выделенный объект с простым кодом ниже:

Selection.InlineShapes(1).Select
0 голосов
/ 04 октября 2011

Я никогда не использовал VBA в Word, но вот небольшая мысль.Если вы вставляете изображение в строку и сразу пытаетесь получить ссылку, это должен быть последний элемент в коллекции InlineShapes.Этот код даст вам ссылку, которую вы можете использовать:

thisDocument.InlineShapes(thisDocument.InlineShapes.Count)

Например, чтобы установить ширину последнего вставленного изображения, вы должны использовать следующее:

thisDocument.InlineShapes(thisDocument.InlineShapes.Count).Width = 100

Чтобы сохранить форму в переменной:

Dim pastedImage As InlineShape

Set pastedImage = ThisDocument.InlineShapes(ThisDocument.InlineShapes.Count)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...