Изображение, вставленное в заголовок Word из буфера обмена через VBA, не указано ни как InlineShape, ни как Shape - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь скопировать изображение (уже изображение в Excel, а не таблицу, которая затем преобразуется в изображение) с листа Excel в заголовок Word. Впоследствии я хотел бы изменить это, например масштаб, выравнивание и т. Д. c.). Вставка работает отлично, но я не могу выбрать ее впоследствии, потому что она не указана ни как InlineShape (которую я затем мог бы преобразовать в форму), ни как Shape - так что это тогда и как я могу ее выбрать? Из того, что я читал здесь и на различных других платформах, этот должен работать, но это не так. Я забыл позаботиться о заголовках?

К настоящему времени я пробовал различные подходы к кодированию, но ни один из них не работает. Примеры:

1)

ThisWorkbook.Worksheets("Backup - Do not change").Shapes("companyLogo").Copy
wdDoc.Sections(1).Headers(2).Range.Paste 'this should result in an InlineShape
Debug.Print wdDoc.InlineShapes.Count '= 0
Debug.Print wdDoc.Shapes.Count '= 0

2)

ThisWorkbook.Worksheets("Backup - Do not change").Shapes("companyLogo").Copy
wdDoc.Sections(1).Headers(2).Range.PasteSpecial DataType:=8 '=wdPasteShape
Debug.Print wdDoc.InlineShapes.Count '= 0
Debug.Print wdDoc.Shapes.Count '= 0

3)

Dim wdRng As Object
Set wdRng = wdDoc.Sections(1).Headers(2).Range
wdRng.Paste
Debug.Print wdDoc.InlineShapes.Count '= 0
Debug.Print wdDoc.Shapes.Count '= 0

Надеюсь, вы поможете мне с этой проблемой. , это сводит меня с ума. Ура!

1 Ответ

1 голос
/ 28 мая 2020

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

ThisWorkbook.Worksheets("Backup - Do not change").Shapes("companyLogo").Copy
With wdDoc.Sections(1).Headers(2).Range
  .Paste
  With .InlineShapes(1)
    .LockAspectRatio = True
    .Width = wdApp.InchesToPoints(2)
  End With
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...