gpt4 book ai didi

excel - 如何设置图表的宽度和高度(以像素为单位)?

转载 作者:行者123 更新时间:2023-12-02 04:18:01 24 4
gpt4 key购买 nike

设置 ChartObject 或其 Shape 的宽度和高度不起作用。它们似乎都只是嵌入图表的白色矩形的内部部分。另外 ChartArea 似乎不是我感兴趣的对象。

我希望以下示例中导出的文件的尺寸为 800x600(我的意思并不是重新缩放导出的图像或反复试验,直到尺寸意外适合)。图表周围一定有一些我忽略的物体。

Sub mwe()

Dim filepath As String
Dim sheet As Worksheet
Dim cObj As ChartObject
Dim c As Chart
Dim cShape As Shape
Dim cArea As chartArea

filepath = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, "\"))
Set sheet = ActiveSheet
Set cObj = sheet.ChartObjects(1)
Set c = cObj.chart
Set cShape = sheet.Shapes(cObj.Name)
Set cArea = c.chartArea

cObj.Width = 800
cObj.Height = 400
MsgBox cArea.Width & " x " & cArea.Height '793x393
c.Export filepath & "test1.png" '1067x534, this is also the size on screen

cShape.Width = 800
cShape.Height = 400
MsgBox cArea.Width & " x " & cArea.Height '794x393
c.Export filepath & "test2.png" '1068x534, this is also the size on screen

End Sub

更新:

事实证明,属于同一 ChartChartObjectShape 已经将 Worksheet 作为父级但宽度和高度不是以像素为单位指定的,而是以点为单位,其中 1 点 = 1/72 英寸,大多数情况下,Windows 似乎假定每英寸 96 像素。

感谢 Steve 的评论,我现在使用以下内容,这是相当可靠的。

导出时未激活的 ChartObject 似乎生成的文件的宽度和高度比应有的高 1。

仍然需要找出如何自动确定因子 px2ptHpx2ptV

Sub mwe()

Dim filepath As String
Dim sheet As Worksheet
Dim cObj As ChartObject
Dim c As Chart

Dim px2ptH As Double: px2ptH = 72 / 96
Dim px2ptV As Double: px2ptV = 72 / 96
Dim w As Double: w = 800 * px2ptH
Dim h As Double: h = 400 * px2ptV

filepath = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, "\"))
Set sheet = ActiveSheet
Set cObj = sheet.ChartObjects(1)
Set c = cObj.Chart

'otherwise image size may deviate by 1x1
cObj.Activate

cObj.Width = w
cObj.Height = h

c.Export filepath & "test.png"

End Sub

最佳答案

尺寸以点为单位,而不是像素。 72 点为英寸。

800 像素/72 = 11.11111.... 导出图像的大小将以英寸/计算机显示器的 dpi 为单位,通常为 96 (与您的情况相同,但您不能总是计算就可以了...使用 WIN API 调用来查找当前值)

Randy Birch 已发布代码,您可以使用它来访问 WinAPI 调用以获取屏幕分辨率等。

转到http://vbnet.mvps.org/index.html并使用左侧的搜索功能查找GETDEVICECAPS

关于excel - 如何设置图表的宽度和高度(以像素为单位)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com