Вставка изображения в заголовок первой страницы и определение его положения в VBA - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь вставить изображение в заголовок первой страницы документа через VBA.

Есть несколько строк, которые могут это сделать, но у каждой есть проблема, которую я перечислю:

Это мой любимый метод, но он вставляет изображение не в заголовок первой страницы, а на все остальные, и также не позволяет мне установить позицию:

ActiveDocument.Sections(1).Headers(2).Shapes.AddPicture ("C:\1.jpg")

Возвращает ошибку выхода за границы:

Set shpCanvas=ActiveDocument.Shapes.AddCanvas(Left:=0, Top:=0, Width:=180, Height:=50)

shpCanvas.CanvasItems.AddPicture FileName:="C:\1.jpg", LinkToFile:=False, SaveWithDocument:=True

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

ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage).Range.InlineShapes.AddPicture ("C:\1.jpg")

Я только начинающий с VBA и словом, прошу прощения за любые гротескные идеи, которые у меня могут быть

Ответы [ 2 ]

1 голос
/ 10 июня 2019

Первый пример кода работает для меня - я вижу картинку на первой странице.Но так как вы не описываете, как структурирован ваш документ, я, возможно, не буду тестировать то, что вы используете ...

Не следует пытаться использовать холст.

Разница междуShape и InlineShape - это то, что Word обрабатывает последнее как текстовый символ.Если третья строка размещает изображение в середине строки, этот абзац, вероятно, отформатирован как «центрированный», а не «левый».Попробуйте изменить форматирование абзаца.

Чтобы позиционировать результат при использовании Shape, переменная объекта должна иметь возможность обрабатывать то, что было вставлено.Например:

Dim shp As Word.Shape, ils As Word.InlineShape

Set shp = ActiveDocument.Sections(1).Headers(2).Shapes.AddPicture("C:\1.jpg")
shp.Top = 0
shp.Left = 0

Объект объявляется, затем вставляемая картинка присваивается объекту за один шаг.Впоследствии переменная объекта может быть использована для адресации изображения.

0 голосов
/ 10 июня 2019

Спасибо за вашу помощь, правильнее это работает так

Dim shp2 As Word.Shape
Dim shp3 As Word.InlineShape

Set shp3 = ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage).Range.InlineShapes.AddPicture("C:\1.jpg")
                            Set shp2 = shp3.ConvertToShape
                            shp2.Top = 0
                            shp2.Left = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...