如何在Access中通过VBA查询当前系统的默认列表分隔符
解决方案
以下是两种可直接在Access VBA中使用的实现方案,无需额外引用依赖:
方案1:使用内置Application.International属性(最简方案)
直接调用Access VBA内置属性读取,代码量最少,适配绝大多数常规场景:
Sub ShowSystemListSeparator() Dim listSeparator As String ' xlListSeparator为VBA内置常量,对应系统列表分隔符配置项 listSeparator = Application.International(xlListSeparator) MsgBox "当前系统默认列表分隔符:" & listSeparator, vbOKOnly, "查询结果" End Sub
该属性读取的是Windows控制面板「区域设置」中的全局列表分隔符配置,和系统设置实时同步。
方案2:调用Windows API读取(高兼容方案)
如果遇到低版本Access或特殊权限场景下内置属性读取失败的情况,可以使用系统API直接读取区域配置:
' 兼容32位/64位Access #If VBA7 Then Declare PtrSafe Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long #Else Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long #End If Const LOCALE_USER_DEFAULT = &H400 Const LOCALE_SLIST = &HC Sub GetListSeparatorByAPI() Dim buffer As String * 256 Dim bufferLength As Long bufferLength = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLIST, buffer, Len(buffer)) Dim listSeparator As String listSeparator = Left(buffer, bufferLength - 1) MsgBox "当前系统默认列表分隔符:" & listSeparator, vbOKOnly, "查询结果" End Sub
该方案直接读取系统用户的区域配置项,兼容性更强,支持所有Access版本。
内容的提问来源于stack exchange,提问作者George Smith
相关产品推荐
相关产品推荐

