日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

excel2010设置列宽为像素_vba:如何设置excel图表的宽度和高度(以像素为单位)?...

發(fā)布時(shí)間:2025/3/19 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 excel2010设置列宽为像素_vba:如何设置excel图表的宽度和高度(以像素为单位)?... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一個(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。