如何解决确定powerpoint中的单位设置
我正在尝试使用 VBA 来确定 PowerPoint 中测量单位的用户偏好,但是,我找不到正确的方法。您知道一种确定单位设置是否以英寸、厘米、磅为单位的方法吗?
解决方法
如果您使用的是 Windows,则没有首选度量单位的设置。 PPT 从您的 Windows 设置中选取公制或英制单位。
如果了解用户看到的单位很重要,您需要查询 Win API。
如果你的代码需要使用坐标,用户看到的设置无关;您的代码将使用点数(72 英寸)。
对 Dan Appleman 的几本旧书进行了一些挖掘,并拼凑了这个 API 调用,以确定系统是设置为美制还是公制。如果我通过它 1033(美国英语),它返回 1,直到我进入控制面板并将系统设置为公制;然后它返回 0。但是在系统设置为 US 的情况下,如果我将区域设置代码传递给它,该函数将返回 0,例如荷兰语。
公平警告:我严格来说是一个剪切/粘贴/播放,直到它停止使 API 程序员崩溃为止。对此几乎无能为力。用一粒盐把这一切都带走,嗯?
Option Explicit
Declare Function GetLocaleInfo& Lib "kernel32" Alias "GetLocaleInfoA" (ByVal _
Locale As Long,ByVal LCType As Long,ByVal lpLCData As String,ByVal cchData _
As Long)
Function WindowsUSorMetric() As Long
' Returns 1 for U.S. or 0 for Metric
' NOTE: Needs modification before it'll work with 64-bit apps
' Assumes USEnglish
Dim Locale As Long
Dim LCType As Long
Dim lpLCData As String
Dim cchData As Long
' 1033 is the languageID for US English
' Use the Object Browser in the VBA IDE,look up msolanguageid for others
Locale = 1033
LCType = &HD
lpLCData = String$(255,0)
cchData = 255
Call GetLocaleInfo(Locale,LCType,lpLCData,cchData)
WindowsUSorMetric = CLng(Left$(lpLCData,InStr(lpLCData,Chr$(0)) - 1))
End Function
Sub TestMe()
MsgBox WindowsUSorMetric
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。