确定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