我正在尝试将 Excel 图表保存为图像。

使用整个代码,我调用了几个工作簿,查找所有工作表并保存所有图表。

以下代码适用于 Excel 2007 和 2010(但由于 + 4,水平线和垂直线可见)。如果我将 Round(shp.Width + 4, 0) 更改为 Round(shp.Width, 0),我会在 2010 年(但不是 2007 年)收到以下错误:


Dim shp As Shape
Dim sht As Worksheet

Set sht = Application.ActiveWorkbook.Sheets(shtName)
Set shp = sht.Shapes(chrtName)

shp.CopyPicture xlScreen, xlBitmap

Dim objChart As ChartObject
Set objChart = sht.ChartObjects.Add(200, 200, Round(shp.Width + 4, 0), Round(shp.Height + 4, 0))
objChart.Activate
ActiveChart.Paste
ActiveChart.Export Filename:=fullPath, Filtername:=Right(fullPath, 3)
objChart.Delete

如何避免使用 +4?

我发现了以下内容:



我怎样才能用 VBA 做到这一点?

最佳答案


Set objChart = Worksheet.Shapes.AddChart2().Chart.Parent
代替
Set objChart = Worksheet.ChartObjects.Add()
前一个函数允许您在第二个参数中指定基本图表类型。

关于excel - 指定形状宽度会产生错误 : The specified dimension is not valid for the current chart type,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11447914/

10-09 18:53