我有一个 VBA 代码,旨在将范围的内容复制到图表中,以便能够将其导出到 PNG 文件(+使用外部命令进行一些后处理)。以下是相关部分:
Sub GenererImage() ' Entry point
getparams ' Collect parameters and define global variables
MiseEnPage.Range(ZoneImage).CopyPicture Appearance:=xlScreen,Format:=xlPicture
Application.DisplayAlerts = False
With ObjetGraphique.Duplicate
.Chart.Paste
.Chart.Export Filename:=CheminImage, Filtername:="PNG"
.Select
.Delete
End With
Application.DisplayAlerts = True
End Sub
在那里调用的 getparams 过程只是从另一个工作表中收集一些参数来定义:
- “MiseEnPage”:对我要复制的范围所在的工作表对象的引用,
- “ZoneImage”设置为“B4:F11”字符串(指范围地址),
- “ObjetGraphique”是对“MiseEnPage”表内的 ChartObject 的引用。这个 ChartObject 是一个空容器(我主要是用它来轻松设置宽度和高度)。
- “CheminImage”是一个字符串,包含磁盘上图片文件名的路径。
这段代码曾经在 Excel 2010 中完美运行。现在我的公司已经部署了 Excel 2013,我的代码现在.Delete
在线失败,将 ChartObject 的副本(其中粘贴了范围图片)留在工作表上并停止宏执行。
我曾尝试先激活工作表,在删除它和其他内容之前选择重复项,但无济于事。在调试器中跟踪执行时,它在删除行上阻塞并出现错误 1004。
我沮丧地卡住了。有什么线索吗?