图表对象的粘贴方法在 Excel 2016 中未按预期工作

2024-01-07

我有一个代码,最近更新到 Excel 2016,显示出一些奇怪的故障。经过大量调试后,我发现其中一个错误是由 Excel 未能正确处理图像引起的。

下面的代码有一个简单的目的,将工作表的已使用部分复制到图像,然后将该图像作为注释插入工作表中。

但是,为了使该函数在 Excel 2016 中正常工作,我需要重复粘贴操作多次,如代码中所示。

该解决方法是实用的,但我相信需要对原因有一定程度的理解,而且我也更喜欢更干净的解决方案。

Public Sub CopySheetToComment(ReferenceSheet As Worksheet, Target As Range)

Dim rng As Range
Dim Sh As Shape

Dim pWidth As Single
Dim PHeight As Single
Dim cmt As Comment

Dim TempPicFile As String
Application.ScreenUpdating = True

' Path temporary file
TempPicFile = Environ("temp") & "\img.png"

' Define and copy relevant area
Set rng = ReferenceSheet.UsedRange
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture

pWidth = rng.Width
PHeight = rng.Height

' Paste copied image to chart and then export to file
Dim C As Object
Set C = ReferenceSheet.Parent.Charts.add
Dim Ch As ChartObject
Set Ch = C.ChartObjects.add(Left:=rng.Left, Top:=rng.Top, Width:=rng.Width, Height:=rng.Height)

' Ugly solution that is working in Excel 2016....
Ch.Chart.Paste
DoEvents
Ch.Chart.Paste
DoEvents
Ch.Chart.Paste
Ch.Chart.Export TempPicFile


' Remove chart object
Dim Alerts As Boolean
Alerts = Application.DisplayAlerts
Application.DisplayAlerts = False
C.Delete
Application.DisplayAlerts = Alerts

' Remove old comment
On Error Resume Next
Target.Comment.Delete
On Error GoTo 0

Application.ScreenUpdating = True
' Add comment
Set cmt = Target.AddComment
Target.Comment.Visible = True

' Infoga bild till kommentar
With cmt.Shape
    .Fill.UserPicture TempPicFile
    .Width = pWidth * 1.33333
    .Height = PHeight * 1.33333
End With
'Target.Comment.visible = False

End Sub

为了调用它,这个例子是有效的:

Sub test()

Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("blad2")
CopySheetToComment ws, Range("D8")

End Sub

需要有关为什么此方法有效但 DoEvents 无效的理论,或要求提供正确代码的建议。


更新我的 Excel 版本后遇到类似的问题。这就是我解决它的方法:

Dim pChart As Chart    'will serve as a temporary container for your pic

rng.CopyPicture xlScreen, xlPicture    'using the rng you use in your code here
Set pChrt = Charts.Add
ActiveChart.ChartArea.Clear
With pChrt
    .ChartArea.Parent.Select    'new for Excel 2016
    .Paste
    .Export Filename:=TempPicFile, Filtername:="PNG"    'TempPicFile is what you defined in your code, so path + file name
    .Delete
End With

然后,您可以使用 PNG 并粘贴它,为其指定宽度/高度。 另外,我会设置Application.DisplayAlerts = False在子的开头并将其设置回True就在最后——更快、更少麻烦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图表对象的粘贴方法在 Excel 2016 中未按预期工作 的相关文章

  • Excel的INDEX函数可以返回数组吗?

    如果数据在范围内A1 A4如下 Apple Banana Orange Strawberry Then INDEX可用于单独返回该列表中的任何值 例如 INDEX A1 A4 3 会回来Orange 是否有类似的 Excel 函数或函数组合
  • Excel VBA 组合框识别

    我的用户表单上有 4 个以上的组合框 当他们触发时 他们触发相同的事件 我想做的是找出哪个 ComboBox 触发了该事件 组合框的创建取决于组件的数量 生成组合框的代码如下所示 For j 0 To UBound ComponentLis
  • 在php中将excel转换为xml

    我想读取 Excel 文件并根据该数据创建 XML 文件 在php中可以吗 Thanks 快速谷歌搜索发现this PHP https github com PHPOffice PHPExcelCodePlex 上的项目 您可能想看一下 它
  • 出现错误时如何中断?

    我有一个函数 其中某个地方有一些错误导致它返回 VALUE当我尝试在Excel中执行它时 我不知道错误在哪里 单步调试代码也很乏味 所以我希望调试器在发生错误时立即中断 我尝试去Tools gt options gt General gt
  • COM 错误?打开工作簿两次会导致引用损坏

    归功于fuglede https stackoverflow com users 5085211 fuglede为了引起我的注意 这是 COM 错误吗 我打开 Excel 工作簿 A 然后打开工作簿 B 这两个工作簿在单元格 A1 中都有一
  • 如何同时在多个 Wksheet 中搜索某个字符串?

    我有大约 30 张工作表 我希望这些代码同时运行 我想找到 ABC 并删除所有工作表中它旁边的单元格的值 我的错误来自 Set rSearch range A1 range A rows count end x1up 当我在 With 语句
  • Excel IE 自动化识别“css”元素

    仍然在抓取网站 从网页打印等方面进行掠夺 但遇到了一个障碍 我希望有人可以帮助我 下图显示了我想要激活的选项卡 我有代码可以到达那里 但无法激活该选项卡 虽然最后一行代码可以在我的台式电脑上运行 但我无法让它在我的其他电脑上运行 我可能可以
  • 我怎样才能优化这个vba循环代码?

    嗨 我写了这段代码 但这段代码非常慢 我该如何优化这段代码 Private Sub printItem r lastCol objStream FirstCol 1 Dim strFirst As String strFirst CStr
  • VB.NET 中的 Excel 自动调整列

    我这里有我的 VB6 代码并且运行良好 For CLms 1 To 10 ws Columns CLms AutoFit lt Autofilt data on XL sheet Next CLms 我已经搜索了如何在 VB NET 中使
  • 用于替换格式但保留单元格值的 VBA:部分解决

    我正在尝试组合 VBA 来搜索特定的单元格格式 然后更改该单元格格式 我从这篇文章中得到了灵感 Excel VBA 值替换后仍保持字符串格式 https stackoverflow com questions 25825136 excel
  • 大型数据集的报告工具/查看器

    我有一个数据处理系统 可以根据其处理的数据生成非常大的报告 我所说的 大 是指该系统的 小 执行在转储到 CSV 文件中时会产生大约 30 MB 的报告数据 而大数据集大约为 130 150 MB 我确信有人有更大的想法 大 但这不是重点
  • 如何使用 VBA 在 Excel 2010 工作表中添加选项按钮以进行分组?

    I want to add many option button to an excel worksheet not to a VBA form and want to group them by row The result should
  • 点击后如何等待页面加载

    下面是简单的 IE 自动化代码 只需输入订单号 例如1413105088和邮政编码始终是78759并单击 提交 按钮 然后从结果页面中获取跟踪号码 例如017136295201034并将它们放入 C 列 它按预期工作 但由于 IE 不太可靠
  • Excel 仅粘贴特殊使用值,还将值的数据类型与值一起复制到目标单元格中

    我一直在尝试更多地了解 Excel 单元格 特别是它们的数据类型 如果有人对细节感兴趣 我的调查位于下面的编号点中 我的结论被标记为 A 到 D 我真的很感兴趣是否有人有什么可以补充的 答 每个 Excel 单元格都有一个属性 用于定义它将
  • 从 Rest API 响应内容处置输出中下载 javascript 中的 excel 文件 [对象,对象]

    我想从我的 angularJs 代码下载一个 excel 文件 我向 Java Rest API 发出 http post 请求并返回带有标头的文件 Content Disposition 附件 文件名 new excel file xls
  • 是否可以编写自定义 Power Query 连接器?

    在 来自其他来源 下的 Power Query 中 我们看到许多专业提供商 Facebook SAP SalesForce 等 我有兴趣编写一个自定义提供程序来访问无法通过任何内置连接器使用的本地专有数据存储 我知道 访问没有支持连接器的数
  • Excel HTTP 获取超时

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

    我正在开发一个 Excel 加载项 它提取单元格 A1 的文本 包括其格式 并在其自己的区域中显示文本 所以添加包含这个 见下面的截图 显示格式化文本的区域 开始提取的按钮请点击查看图片 https i stack imgur com oy
  • 如何使用 xlrd 将新列和行添加到 .xls 文件

    如何向 xlrd 中的工作表添加新列和 或行 我有一个使用 open workbook 读取的 xls 文件 我需要在第一张表中添加一个新列 bouncebacks 然后在该表中添加新行 但我在 xlrd 文档中找不到任何显示如何添加新行和
  • 有没有办法破解 Excel VBA 项目的密码?

    我被要求更新一些 Excel 2003 宏 但 VBA 项目受密码保护 而且似乎缺少文档 没有人知道密码 有没有办法删除或破解 VBA 项目上的密码 你可以直接尝试这个VBA不需要十六进制编辑的方法 它适用于任何文件 xls xlsm xl

随机推荐

  • TCP校验和计算与wireshark计算不匹配

    我遇到一个问题 示例程序 复制如下 生成的 tcp 校验和与wireshark 计算的校验和不匹配 有人可以指出我哪里出错了吗 这里我尝试了两种方法 tcp 校验和 get ipv6 udptcp checksum 有了这两个值 就会得到两
  • 使用 ant mxmlc 任务将运行时库路径添加到 Flex 构建配置

    我正在尝试构建一个 Flex 项目 并将其链接到一些 RLS 在 Flex Builder 中设置项目时 相应的 构建配置 我通过将 dump config 添加到编译器选项而获得 会生成 除其他外 如下所示的标签
  • 为什么历史记录在 Firefox 中的 onclick 上不起作用?

    我不明白为什么在 Firefox 中 window history back 确实适用于按钮
  • 使用堆栈来遍历和解决迷宫 - Java

    所以我正在尝试创建一个迷宫求解器程序来解决 X 和 O 的迷宫 我想做的是创建一个点类 这样我就可以创建一个二维点数组 这将允许打印到输出页面以及相对简单地实现堆栈 我想在实际程序本身中实现的一般思想的最简单算法我认为应该是 1 Move
  • 奇怪的 SQLAlchemy 错误消息:TypeError: 'dict' 对象不支持索引

    我正在使用 SqlAlchemy 使用手工编写的 SQL 从 PG 数据库中获取数据 我正在尝试一个包含类似 SQL 运算符 的查询 这似乎会导致 SqlAlcjhemy 陷入循环 sql SELECT DISTINCT u name fr
  • 如何禁用一行上的行组扩展功能?

    在没有任何特定解决方案的情况下进行了大量搜索之后 我不得不问这个问题 我想要的是隐藏单个组行上的行组图标 如下图所示 我有一个组行 其中只有一条记录 该记录已显示在顶行中 我想隐藏该单条记录上的折叠图标 当组行超过一行时 仅显示折叠 展开图
  • Heroku Spring Boot 启动

    我尝试在 Heroku 上运行我的 Spring Boot 应用程序 应用程序正确启动 但之后它立即崩溃并出现以下错误 2019 03 19T11 45 28 343758 00 00 app web 1 2019 03 19 11 45
  • 有没有办法将文本表格转换为 PowerShell 对象

    有许多工具以表格格式输出数据 diskpart 就是这样的一个例子 去掉一些无关的输出 你会得到这样的结果 Disk Status Size Free Dyn Gpt Disk 0 Online 136 GB 0 B Disk 1 Offl
  • Tortoisesvn - 缺少设置 - 使用“_ svn”而不是“.svn”

    我刚刚从 SVN 1 6 更新到 SVN 1 7 我的图标叠加层未显示 在查看 1 7 中 SVN 的设置时 我不再可以选择使用 svn 目录 这可能就是我遇到问题的原因 有谁知道如何让 SVN 1 7 再次使用 svn 目录 这是我在新版
  • CompletableFutures 并根据内部值进行过滤

    我现在有点困惑 所以我有一个应该返回的方法CompletableFuture
  • 实体框架代码首先插入方法挂钩

    我正在尝试将审核日志附加到我编写的实体中 我想知道是否存在可以覆盖的上下文中的挂钩以提供所需的功能 我想做的是 插入时运行方法 A 更新时运行方法 B 删除时运行方法C 我可以手动将其添加到控制器中 但我更喜欢更具体的解决方案 所需的效果是
  • Android:如何获取父View的ID?

    View getRoot 回报View 所以我们可以通过使用轻松找出哪个是根视图getResourceName View getId View getParent 虽然我期望它也会返回View这是父级 实际上只返回一个实例ViewParen
  • 如何使用 vim 键绑定在 Sublime Text 2 中插入垂直文本列?

    如何使用 vim 键绑定在 Sublime Text 2 中插入垂直文本列并缩进它 source yannesposito com http yannesposito com Scratch img blog Learn Vim Progr
  • 将刻度转换为日期时间

    该网站上有许多问题解释如何执行此操作 我的问题是 当我做似乎对其他人都有效的事情时 我没有得到正确的日期或时间 代码是 long numberOfTicks Convert ToInt64 callAttribute startDateTi
  • 用 animate() CSS3 替换 jQuery 幻灯片

    我在页面上有 jQuery SlideUp 和 Down 动画的性能非常糟糕 所以我想用 animate 或 css 替换滑动函数以利用 CSS3 动画 通常比 jQuery 更平滑 这是我的代码 jQuery close on click
  • Maven 在运行测试用例 Eclipselink 和 hsqldb 时挂起

    Using jps and jstack我可以找到有问题的等待线程 但不知道如何对其进行故障排除或导致它的原因 请参阅下面的 Maven 依赖项和jstack结果和等待线程tid 0x000000000022c000 进一步分析 似乎所选版
  • 防止添加新的 csproj 将 AnyCPU 添加回解决方案文件

    我们有一个解决方案 我们只想拥有x86平台 但每次我们向解决方案添加新项目时 它都会添加AnyCPU返回解决方案中的每个项目 删除所有的内容是很乏味的AnyCPU解决方案文件中的行 因为解决方案中有 70 多个项目 他们有什么方法可以配置
  • 如何将 ViewModel 属性作为模型传递给部分视图?

    我有一个名为 Log ViewModel 的 ViewModel 其中有 3 个属性 如下所示 public class LogViewModel public IEnumerable
  • laravel 4 中数组表单字段的验证错误

    我们如何验证数组形式的表单字段 看一下下面的代码 用户手机型号 public static rules array phonenumber gt required numeric isPrimary gt in 0 1 用户控制器 vali
  • 图表对象的粘贴方法在 Excel 2016 中未按预期工作

    我有一个代码 最近更新到 Excel 2016 显示出一些奇怪的故障 经过大量调试后 我发现其中一个错误是由 Excel 未能正确处理图像引起的 下面的代码有一个简单的目的 将工作表的已使用部分复制到图像 然后将该图像作为注释插入工作表中