以像素为单位获取excel单元格的大小

and*_*ier 3 c++ excel vba

我试图以编程方式(C++但VBA解释没问题)以像素为单位获取excel单元格的大小.excel应用程序gui将单元格的大小显示为:
宽度:8.28(160像素)高度:24.6(41像素),字体是Arial 20磅.

使用excel范围我可以得到:
ColumnWidth:8.3,RowHeight:24.6
范围宽度:96,范围高度24.6

我尝试使用PointsToScreenPixelsX和PointsToScreenPixelsY来表示所有上述值,但它们返回的值与excel gui所说的不匹配(行/单元格高度为396,列宽为136,列宽为224).

有任何想法吗?

Nei*_*eil 5

从点到像素的转换取决于您的DPI设置.有72个点到一英寸,所以如果你有96点,这是4/3英寸.如果您的DPI(在"显示属性"中)为120,那么可以达到160像素.

换句话说,pixels = points * DPI / 72.

但是,这不需要考虑缩放.ActiveWindow.Zoom在Excel中是百分比,因此例如200是正常大小的两倍.请注意,UI仍显示未校正的像素.