将剪贴板中的图像粘贴到 Excel 中的单元格

2023-12-12

我想使用 vba 将图像从剪贴板粘贴到 Excel 单元格。 我可以找到这样的代码:

If My.Computer.Clipboard.ContainsImage() Then
Dim grabpicture = My.Computer.Clipboard.GetImage()
PictureBox1.Image = grabpicture
End If

但这里的grabpicture变量是一个对象。如何从图像对象更新单元格。 像这样,

Sheet1.Range("D11").Value = grabpicture

要通过剪贴板将图像从一张纸移动到另一张纸,请使用标准方法“复制粘贴”。对于粘贴方法,您必须定义要粘贴图像的范围,例如(您可以跳过 Destination 参数):

Worksheets("Sheet1").Range("C1:C5").Copy
ActiveSheet.Paste Destination:=Worksheets("Sheet1").Range("D1:D5")

在指定区域插入图片,但存在一些特殊性:

  • 对于 Office 2003,粘贴的图像未完全绑定到左上角 范围的角落;如果您定义一个单独的单元格,图像可能会得到 位置越左、越低,甚至可能得到相邻的单元格;所以 您必须使用顶部和左侧属性执行重新对齐过程 (见下文);
  • 对于 Office 2003,未选择粘贴图片,因此需要特殊程序 必须识别 Shapes 集合中的图像;

  • 对于 Office 2007,图像被选择并绑定到左上角 指定的范围,因此可以使用 Selection 属性来更改 集合中的图像属性(例如名称);

  • Shapes 集合中粘贴的图像索引成为最重要的但其中 图片集(类型=msoPicture);在 Office 2003 中,形状是 分组,以便第一个是控件块(Lstbox、Combobox、 等)而图像块是后者,所以粘贴的图像索引实际上是 所有集合中的最后一个;对于 Office 2007 图像块结果是 在控件块之前,因此您应该搜索 IMAGE BLOCK 元素之间最后粘贴图像的索引 (参见下面的示例);

  • 要取消选择粘贴的图像(不要意外删除它),您应该 将焦点移动到任何单元格/例如 Range("A1").Select。

因此,要编写在 Office 2003 或 Office 2007 环境中正常工作的通用程序,您应该:

  • 首先,使用特殊程序找出粘贴的图像(它在 Shapes 集合中的引用或索引);
  • 其次,将图像对齐到图像粘贴范围的左上角;
  • 第三,将焦点移至另一个单元格。

下面是定义 Shapes 集合中最后粘贴图像的索引的函数:

Function GetIndexPastedPicture() As Integer
' Pasted picture has the upmost index among the PICTURE block 
' But it is not necessarily the last inde[ in whole collection
' set reference to target sheet with pasted image
Set ThisDBSheet = Workbooks("BookName.xls").Worksheets("SheetName")
Dim sh As Shape, picIdx As Integer
picIdx = 0 ' initial value of index in Shapes collection, starts from 1
For Each sh In ThisDBSheet.Shapes
    If sh.Type = msoPicture Then ' image found
        picIdx = sh.ZOrderPosition ' image index
    End If
Next
' after For loop, picIdx - is the last index in PICTURE block 
GetIndexPastedPicture = picIdx
End Function

然后(假设剪贴板已经有正确的图像)粘贴图像的过程如下所示:

Sub InsPicFromClipbrd(sInsCell As String, sPicName As String)
' Image is pasted to cell with name sInsCell,
' it is aligned to upper-left corner of the cell, 
' pasted image gets name sPicName in Shapes collection
' set reference to target sheet with pasted image
Set ThisDBSheet = Workbooks("BookName.xls").Worksheets("SheetName")
ThisDBSheet.Paste Destination:=Range(sInsCell) ' paste image fom clipboard
c1 = GetIndexPastedPicture() ' get index of pasted image (see above)
With ThisDBSheet.Shapes.Item(c1) ' correct the properties of the pasted image 
    .Top = Range(sInsCell).Top ' top alignment
    .Left = Range(sInsCell).Left ' left alignment
    .Name = sPicName ' assign new name
End With
Range("I18").Activate ' move focus from image
End Sub 'InsPicFromClipbrd
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将剪贴板中的图像粘贴到 Excel 中的单元格 的相关文章

  • 单步执行会产生与运行不同的结果

    我有一段代码用于拆分单元格中的文本 数据是由不使用任何有用的分隔符的调查程序输出的 因此不幸的是 将文本转换为列对我没有任何帮助 我写了这段代码 但事实证明 两种情况下结果是不同的 我一步步运行代码 直到添加第一列 然后让它完成 我从执行宏
  • Power Query 根据 Excel 列列表过滤 SQL 视图

    有没有办法使用 Power Query 根据 Excel 表列中的值列表过滤 SQL 视图 我有一个返回大量数据 数百万条记录或属性 的 SQL 视图 用户希望根据属性 ID 的 Excel 表格列进行过滤 我知道我可以根据 Power 查
  • 出现错误时如何中断?

    我有一个函数 其中某个地方有一些错误导致它返回 VALUE当我尝试在Excel中执行它时 我不知道错误在哪里 单步调试代码也很乏味 所以我希望调试器在发生错误时立即中断 我尝试去Tools gt options gt General gt
  • VBA 中的 Excel 下拉列表:“无法获取工作表类的 DropDowns 属性”

    我有这个代码 Sub addDropdown Name ActiveSheet DropDowns Add 74 25 60 188 25 87 75 Select Set n ActiveSheet DropDowns Name If N
  • 如何在 Excel VBA 中仅迭代自动筛选工作表中的行?

    需要仅迭代自动筛选范围中的行 目的是获取行索引 我尝试过这个块 For Each ele In rng RowInd ele Rows Address RowNum Split RowInd 2 Next ele 这会在 rng 中的所有
  • 使用 C# 的高级过滤器 excel

    我需要在Excel工作表中做一个过滤器 我想知道是否可以做这样的过滤器 List
  • 如何在vba中查找命名形状的索引号

    我运行了以下代码 for i 1 to activedocument Shapes count debug Print activedocument shapes i name next 并获得了形状列表 但是缺少一个形状 我选择了一个未包
  • 大型数据集的报告工具/查看器

    我有一个数据处理系统 可以根据其处理的数据生成非常大的报告 我所说的 大 是指该系统的 小 执行在转储到 CSV 文件中时会产生大约 30 MB 的报告数据 而大数据集大约为 130 150 MB 我确信有人有更大的想法 大 但这不是重点
  • 在vba中为图例设置颜色代码

    我在每个工作表中都有数据透视表 我必须对它们进行比较 但每个工作表中图例的颜色都不同 如何设置颜色 例如 如果我的图例条目是 ISO 我希望它始终为 蓝色 如果它是 LAT 我希望它在每张纸中都为 红色 这可以通过操纵来完成Series中的
  • C# 如何判断单元格中的公式是否有错误

    在 Excel 公式中 您可以使用 ISERR A1 or ISERROR A1 在 VBA 宏中 您可以使用IsError sheet Cells 1 1 但是使用 VSTO Excel Addin 项目我没有在 Microsoft Of
  • 在 VBA 中调用批处理文件无法正常工作

    我正在尝试创建一个可供其他人使用的程序 目前 我的文件位于目录中C Documents and Settings jpmccros Desktop test 该目录包含我的macro xlsm names bat 还有另一个子目录名为Dat
  • Excel HTTP 获取超时

    我们有这个小子 它只是将数据泵入远程服务器 一切都按预期进行 前几天 网络服务器发生了一次持续大约一个小时的事件 我仍然可以 PING 服务器 但 IIS 没有响应 结果 宏只是挂起等待响应 关于快速通过 失败测试或超时有什么想法吗 Sub
  • Mac 上使用 Excel VBA 进行正则表达式

    我需要将 regEx 与 Excel VBA 一起使用 我使用的是 Mac OS 10 10 和 Office 2011 因此没有可以使用的 DLL 文件 这里有什么可做的 我读到我必须绑定一个苹果脚本 这是如何完成的以及该脚本需要什么内容
  • 条件格式化VBA多个条件

    我对 VBA 世界非常陌生 需要一些关于条件格式的 VBA 方面的帮助 1 我需要将条件格式应用于列 M 7岁以下绿色 黄色从7 20 红色大于20 最重要的条件是 如果列 N 声明 NOPO 则我不希望应用条件格式 我已经制定了一个公式来
  • VBA半正矢公式

    我正在尝试将半正矢公式应用到Excel函数中 它看起来像这样 Public Function Haversine Lat1 As Variant Lon1 As Variant Lat2 As Variant Lon2 As Variant
  • 自动创建 Outlook 约会

    我有一个跟踪到期日期的电子表格 excel 2003 我想知道是否有办法让这些到期日期在 Outlook 中创建约会 提醒 到期日期位于电子表格的一个字段中 实体名称位于另一列中 理想情况下 我希望 Outlook 2003 能够获取日期
  • Hyperlinks.add VBA [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在用 VBA 编程 我想使用创建超链接hyperlink addActiveSheet 对象的方法 但是它不起作用 这是我的代码 set
  • 在打开的Word文档中找到未知的姓名和姓氏,将其复制并使用excel VBA粘贴到excel .activesheet中的单元格A12中

    你好 Stackoverflow 社区 我的目标是编写一个宏 在之前打开 活动的 Word 文档中查找未知姓名 或两个名字都写成 Firstname Secondname 和姓氏 或两个姓氏写成 Firstsurname Secondsur
  • 使用 python 只读取 Excel 中的可见行

    我想只读取 python 中 Excel 工作表中的可见行 输入 Excel表 所以当我过滤时 作为 python 中的输出 在本例中我将仅获得可见数据 1 行 这是我的代码 from openpyxl import load workbo
  • 修剪工作簿中的所有单元格(VBA)

    我尝试向一直在开发的 Excel 加载项添加功能 该功能会修剪已用单元格末尾的前导空格 甚至可能解析文本 我需要这样做的原因只是为了将其变成超链接我已经在工作了 但是那部分很好 这是我到目前为止所尝试的 我已经修剪了active works

随机推荐

  • SELECT 如何返回未排序的结果集?

    当我访问此链接时 我只是想以相反的顺序显示 SELECT 查询的结果集 选择 MySQL 中的最后一行 在一个答案中提到关系数据库没有第一行或最后一行 所以我的问题是我们是否输入SELECT FROM table name 结果集是否必须与
  • 模板文字在反应中不起作用

    我的代码如下 模板文字不会在 span 标记中创建多行字符串 而它会在控制台中创建多行 import React Component from react import ReactDOM from react dom class MyApp
  • OnServiceConnected 没有被调用

    我已经提到了以下问题 但找不到答案 无法获取服务对象 onServiceConnected 从未调用 onServiceConnected 没有被调用 出现空指针异常 and onServiceConnected 在bindService
  • 在 IIS7 中配置 ASP.NET

    有没有办法在 IIS7 中配置 ASP NET 我知道这一定是一个愚蠢的问题 但在 IIS7 中我看到了 ASP 的图标 这是经典 ASP 的配置吗 IIS 7 与以前的版本有很大不同 尤其是在 ASP NET 方面 在以前的版本中 ASP
  • 在VS2013中从SVN更新后,数据集Designer.cs生成Designer1.cs

    从 SVN 数据集 Designer cs 文件进行更新后 我遇到一个奇怪的问题生成另一个具有不同名称的文件 例如 test Designer cs 更新后重命名为 test1 Designer cs 我遵循发现的建议here 但无法再次生
  • 触摸开始无法检测到所触摸的内容

    我正在使用 NSTimer 构建一个旋转横幅来跟踪当前图像 该图像是由 5 个不同图像制作而成的动画 我设置了一个 TouchesBegan 来在有人单击横幅时继续处理横幅上的触摸事件 我的概念验证有效 但将其转移到另一个项目中时 它就崩溃
  • Google 重定向 URI 不允许使用片段 URL 的解决方法

    我使用mac开发一个MEAN堆栈项目 我的网页https localhost 3000 login and https localhost 3000 new工作 请注意 我的所有页面都需要有 中间工作 https localhost 300
  • 无法加载模块描述符类:找不到类“com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor”

    所以我是新手 我尝试使用 Firebase 9 0 0 实现电子邮件 密码身份验证 因此该活动要么执行注册操作 要么执行登录操作 登录操作运行顺利 我可以在 Firebase 控制台上看到更新 但是当我尝试注册新用户时 出现此错误 E Dy
  • Java:全局异常处理程序

    有没有办法在 Java 中创建全局异常处理程序 我想这样使用 When an exception is thrown somewhere in the WHOLE program exit 处理程序可能无法捕获抛出的异常try catch
  • 禁用列排序不适用于多个 angularjs 数据表

    我正在使用多个 angularjs 数据表 并在每次用户从下拉列表中选择一个选项时生成一个新表 根据用户的选择 我发出 http 请求以从数据库中获取新数据 对于每个表 我都有不同的dtColumnDefs 是动态设置的 因为我的表列标题是
  • 如何在 PHP 中随机化数组

    我有一个像这样的数组 arr 1 2 4 5 6 7 8 9 但我需要这个数组的随机版本 我正在使用该函数shuffle像这样 random shuffle arr 但这个函数只是返回true而不是数组的随机版本 shuffle 此函数对数
  • Django ModelForm ChoiceField 不显示实例数据

    我有一个ModelForm我在其中设置了几个字段的类ChoiceField 对于我的一个观点 我想从我的ModelForm从数据库中模型实例中提取的类 如下所示 form MyModel instance model instance 当我
  • ItemsControl 与视图模型的多个数据模板

    是否可以将以画布为模板的项目控件绑定到多个数据模板 我有 2 个集合 根据类型我想在画布上显示不同的控件 我不确定 但我可以考虑一个具有 2 个 ObservableCollections 的 Viewmodel 例如 如果我有 形状 和
  • 从字符串执行命令

    在 r 中使用 scopus 检索引用 library rscopus auth token header please add akey please add set api key akey x abstract retrieval 1
  • 为什么要在 PHP 中使用模板系统? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 为什么要在 PHP 中使用模板系统 我的问题背后的原因是 PHP 本身就是功能丰富的模板系统 为什么我应该安装另一个模板引擎 到目前为止我发现的唯一两个优点是 更简洁的语法 有时 模板引擎
  • Microsoft.AspNetCore.WebUtilities 超出行长度限制 100

    我一直在尝试自动化测试 将文本文件上传到使用 flowjshandler 的 Web api 所有这些都在 c net core 和 linux docker 容器中运行 从 Visual Studio 运行时 测试程序毫无例外地上传文件
  • 谷歌应用程序邀请 - 短信未发送

    我尝试寻找解决方案 但还没有运气 我正在尝试使用谷歌应用程序邀请来邀请朋友使用我的应用程序 android 电子邮件已发送 但短信未发送 我没有收到任何错误消息 事实上我实际上收到一条消息 表明邀请已发送 我还尝试向我的应用程序添加短信权限
  • '(引用引用)在方案中

    我正在尝试自学方案 谁能告诉我为什么 quote quote 将输出 quote and quote quote 将输出 quote 非常感谢 这个表达式 quote quote 扩展后
  • Swift 3 CVarArg 被多次传递的问题

    我在 swift 3 中有以下代码 class StringUtility static func Localizer tableName String gt key String params CVarArg gt String retu
  • 将剪贴板中的图像粘贴到 Excel 中的单元格

    我想使用 vba 将图像从剪贴板粘贴到 Excel 单元格 我可以找到这样的代码 If My Computer Clipboard ContainsImage Then Dim grabpicture My Computer Clipboa