确定VBA中设备的types
我想用excelmacroslocking平板电脑的屏幕方向。 有效。
但是当我回到电脑时,它发给我:
“在用户32中找不到DLL入口点SetDisplayAutoRotationPreferences”。
用于lockingscreenb方向的代码如下:
Enum ORIENTATION_PREFERENCE ORIENTATION_PREFERENCE_NONE = 0 ORIENTATION_PREFERENCE_LANDSCAPE = 1 ORIENTATION_PREFERENCE_PORTRAIT = 2 ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED = 4 ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED = 8 End Enum Private Declare Function SetDisplayAutoRotationPreferences Lib "user32" (ByVal ORIENTATION_PREFERENCE As Long) As Long Sub RotateToLandscape() Dim lngRet As Long lngRet = SetDisplayAutoRotationPreference (ORIENTATION_PREFERENCE_LANDSCAPE) End Sub
它不能在计算机上工作的原因是Windows计算机上没有SetDisplayAutoRotationPreferences函数。
有什么方法可以确定macros运行的设备是否是平板电脑? 或者,也许为了避免DLL入口点错误?
电脑的操作系统是Windows 7,它使用Excel 10'。
破解你的问题最快捷的方法是,我怀疑,处理这个错误。
前言是,下面的例子,你现在要忽略SetDisplayAutoRotationPreference()
函数抛出的任何潜在的错误。 完全有可能处理更强大,以满足您的需求。 请参阅: http : //www.cpearson.com/excel/errorhandling.htm
Sub RotateToLandscape() Dim lngRet As Long On Error Resume Next 'When error occurs skip that line lngRet = SetDisplayAutoRotationPreference (ORIENTATION_PREFERENCE_LANDSCAPE) On Error GoTo 0 'Set default error handling End Sub
编辑:
在我目前的环境下,正确的说我正在使用桌面,但是你可能需要在你的环境中进行testing。
Sub test_() strComputerType = fGetChassis() MsgBox "This Computer is a " & strComputerType End Sub Function fGetChassis() Dim objWMIService, colChassis, objChassis, strChassisType Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colChassis = objWMIService.ExecQuery("Select * from Win32_SystemEnclosure") For Each objChassis In colChassis For Each strChassisType In objChassis.ChassisTypes Select Case strChassisType Case 8 fGetChassis = "Laptop" '#Portable Case 9 fGetChassis = "Laptop" '#Laptop Case 10 fGetChassis = "Laptop" '#Notebook Case 11 fGetChassis = "Laptop" '#Hand Held Case 12 fGetChassis = "Laptop" '#Docking Station Case 14 fGetChassis = "Laptop" '#Sub Notebook Case 18 fGetChassis = "Laptop" '#Expansion Chassis Case 21 fGetChassis = "Laptop" '#Peripheral Chassis Case Else fGetChassis = "Desktop" End Select Next Next End Function