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