通过 VBA 从剪贴板粘贴到 Word header 的图像既未列为 InlineShape 也未列为 Shape

Image pasted to Word header from clipboard via VBA is neither listed as InlineShape nor as Shape

我正在尝试从 Excel sheet 到一个单词 header。之后我想操纵它,例如比例、对齐方式等)。粘贴效果很好,但之后我不能 select 它,因为它既没有列为 InlineShape(然后我可以将其转换为形状)也没有列为 Shape - 那么它是什么,我怎么能 select 它?从我在这里和其他各种平台上读到的内容来看,这个 应该 可以工作,但事实并非如此。我是不是忘记处理有关 header 的事情了?

我现在尝试了各种编码方法,但 none 有效。示例:

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

我希望你能帮我解决这个问题,这让我很生气。干杯!

您的代码的根本问题是您将其粘贴到 header,但随后试图引用它而不考虑其位置。尝试以下方法:

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