【问题标题】:Copy image from one workbook to another workbook将图像从一个工作簿复制到另一个工作簿
【发布时间】:2019-05-06 06:05:43
【问题描述】:

我在合并单元格范围 S1:V8 中的 sheet1 中有一个图像。

我不知道这张图片的名称,因为每次从模板创建新的 Excel 文件时,我们都会在该区域粘贴不同的图片。

我想将这个工作簿或另一个工作簿中这个范围内的图片复制到一个名为“数据库”的工作表中的单元格 A6 中。

我找到了几个例子,但我们必须知道图片名称。

我想要第一张照片。我想我可以检查范围是否有图片。然后选择第一张图片并将其粘贴到另一个工作簿中。

我唯一不能做的就是选择范围内的图片进行复制。

如果可能的话,奖励功能:
- 之后我想将其调整为单元格尺寸,但保持纵横比
- 在我想将它压缩到 96 dpi 之后
- 这个文件将有几张图片。如果有人修改图片尺寸,有没有办法将它们全部调整到每个单元格? (A6 单元格中会有一张图片,A7 单元格中有一张,...,例如,有人可以更改 A20 中的图片大小)

post 也在 MrExcel 论坛中。

【问题讨论】:

    标签: excel vba image


    【解决方案1】:

    目前尚不清楚您所指的图片是“在单元格中”还是漂浮在单元格上方。据我所知,“在单元格中”拥有图片的唯一方法是将其放在单元格的注释中(实际上,旨在作为注释文本的背景图片)。无论哪种情况,使用 VBA 操作它的关键是获取它的参考。如果您首先选择单元格区域,则以下代码将识别上述任何一种情况的存在,如动画 gif 所示。不幸的是,据我所知,您所能做的就是通过 VBA 向 cmets 添加背景图片。

    Option Explicit
    Sub testForPicturesOrComments()
    Dim p As Picture, r As Range, hasComment As Boolean
    For Each p In ActiveSheet.Pictures
      MsgBox ("There's a picture called " & p.Name)
    Next p
    For Each r In Selection
      On Error Resume Next
      hasComment = r.Comment.Parent.Address = r.Address
      'Reset Run Time Errors
      On Error GoTo 0
      If hasComment Then
      MsgBox ("There's a comment in " & r.Address _
      & " with a shape.ID = " & r.Comment.Shape.ID)
        hasComment = False
      End If
    Next r
    End Sub
    

    【讨论】:

    • 你好托尼。图片超出了合并范围 S1:V8 不在评论中。这个范围不会改变。我可以更改 ActiveSheet。图片到 Activesheet.Range("S1:V8).Pictures ?
    • 如果您想定位图片附近的单元格,您可以使用图片对象的属性,例如 .TopLeftCell 或 .BottomRightCell - 例如,您可以替换我的第一个 MsgBox带有 MsgBox 的代码(“在”和 p.TopLeftCell.Address 上有一张名为“& p.Name &”的图片)——如果你得到了帮助,请将问题标记为已回答——谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多