我试图以编程方式(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).
有任何想法吗?
从点到像素的转换取决于您的DPI设置.有72个点到一英寸,所以如果你有96点,这是4/3英寸.如果您的DPI(在"显示属性"中)为120,那么可以达到160像素.
换句话说,pixels = points * DPI / 72.
但是,这不需要考虑缩放.ActiveWindow.Zoom在Excel中是百分比,因此例如200是正常大小的两倍.请注意,UI仍显示未校正的像素.