excel2010设置列宽为像素_vba:如何设置excel图表的宽度和高度(以像素为单位)?...
一個看似簡單的問題.但是設置ChartObject的寬度和高度或它的Shape不會這樣做,它們似乎只是該白色矩形的一些內部部分,即嵌入圖表. ChartArea似乎也不是我感興趣的對象.
我想要的是在下面的例子中導出的文件的尺寸為800×600(我并不意味著重新縮放導出的圖像或試驗和錯誤,直到大小意外地適合).圖表周圍一定有一些我忽略的對象.
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
更新:
事實證明,ChartObject和屬于同一圖表的Shape已經將工作表作為父級.但寬度和高度沒有像我假設的那樣以像素為單位指定,而是以點為單位,其中1點= 1/72英寸.
在大多數情況下,Windows似乎假設每英寸96像素.
感謝史蒂夫的評論,我現在正在使用以下內容,這是非??煽康?在導出時未激活的ChartObject似乎生成寬度和高度比應該高1的文件.
它仍然是如何自動確定如何確定因子px2ptH和px2ptV.
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
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的excel2010设置列宽为像素_vba:如何设置excel图表的宽度和高度(以像素为单位)?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10安装misql8_Win10下
- 下一篇: m5310模组数据上传至onenet_N