gpt4 book ai didi

vba - 在word中选择粘贴的图片

转载 作者:行者123 更新时间:2023-12-04 01:52:02 25 4
gpt4 key购买 nike

我正在尝试创建一个宏,将图像作为增强型图元文件复制到 Word 中,并将其调整为特定宽度。

我在 Excel 中有一个类似的宏,如下所示:

Sub Macro1()

ActiveSheet.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False _
, DisplayAsIcon:=False
Selection.ShapeRange.Width = 255

End Sub

这只是简单地记录在 Excel 中,效果非常好。然而,在 word 中做同样的事情似乎是不可能的。

如果我不使用录制宏,我将只粘贴图片并按 shift+向左箭头选择图片。但是,一旦我开始录制,这就不起作用了。我环顾四周,显然它与 Inlineshapes 有关?但是我找不到一段代码实际上允许我选择我刚刚粘贴的图片,以便我之后调整大小。

为什么会这样,我该如何解决?

最佳答案

当您使用 VBA 在 Word 中粘贴时,粘贴的内容未被选中,显然这在 Excel 中有所不同。可能是因为 Shape 链接到工作簿单元格并且该单元格已被选中?

无论如何,以下代码成功地拾取粘贴的图像以进行进一步操作。它所做的是计算从文​​档开头到当前选择的 InlineShapes 的数量,加上一个字符。

在粘贴操作之后,新的 InlineShape 将添加到范围内的项目数中,因此可以通过其索引号 - (lNrIls + 1) 将其拾取。

为了完整起见,我还包含了粘贴为 Shape 的变体(这意味着图像具有文本环绕格式等)。基本方法与 InlineShape 相同。

注意:默认情况下,粘贴图像时,Word 将使用“文件/选项/高级”部分“剪切、复制和粘贴”中的插入/粘贴图片为 设置。因此,在某些机器上,图像可能会被粘贴为 InlineShape,而在其他机器上可能会被粘贴为 Shape。如果您想特别内联粘贴或使用文本换行,请使用 PasteSpecial 以及 wdFloatOverTextwdInLine WdOLEPlacement 枚举值.

Sub PasteAndSelectPicture()
Dim ils As Word.InlineShape
Dim shp As Word.Shape
Dim lNrIls As Long
Dim lNrShp As Long
Dim rngDoc As Word.Range
Dim rngSel As Word.Range

Set rngDoc = ActiveDocument.content
Set rngSel = Selection.Range
rngDoc.End = rngSel.End + 1

'Get an InlineShape
lNrIls = rngDoc.InlineShapes.Count
rngSel.Paste
Debug.Print rngDoc.InlineShapes.Count, lNrIls
Set ils = rngDoc.InlineShapes(lNrIls + 1)
ils.width = 255

'Get a pasted Shape
' lNrShp = rngDoc.ShapeRange.Count
' rngSel.PasteAndFormat Type:=wdFormatOriginalFormatting
' Debug.Print lNrShp, rngDoc.ShapeRange.Count
' Set shp = rngDoc.ShapeRange(rngDoc.ShapeRange.Count)
' shp.RelativeHorizontalPosition = wdRelativeHorizontalPositionCharacter
' shp.RelativeVerticalPosition = wdRelativeVerticalPositionLine
' shp.Left = 10
' shp.Top = 10
End Sub

关于vba - 在word中选择粘贴的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52585820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com