gpt4 book ai didi

vba - 使用 VBA 将区域格式更改为另一种语言

转载 作者:行者123 更新时间:2023-12-03 02:21:48 26 4
gpt4 key购买 nike

我需要将区域格式更改为“法语(加拿大)”,以便日期值接受法国月份(例如 05 Mars、12 Avril 等)然后在 VBA 代码中将其恢复为“英语(加拿大)”

我希望它没有那么复杂,并且有一个写入属性可以使用 VBA 修改此设置。

到目前为止,我已经找到了 Application.International(xlCountrySetting) 但它只是一个读取属性。

这是我希望更改的相关设置:enter image description here enter image description here

谢谢

最佳答案

正如评论中所指出的,您可以通过几个简单的 Windows API 调用来完成此操作。我建议不要假设机器当前设置为“英语(加拿大)”,而是使用 GetUserDefaultLCID 测试当前设置,然后在完成后将其设置回该设置。

#If VBA7 Then
Private Declare PtrSafe Function SetThreadLocale Lib "kernel32" _
(ByVal Locale As Long) As Boolean
Private Declare PtrSafe Function GetUserDefaultLCID Lib "kernel32" () As Long
Private Declare PtrSafe Function LocaleNameToLCID Lib "kernel32" _
(ByVal lpName As LongPtr, dwFlags As Long) As Long
#Else
Private Declare Function SetThreadLocale Lib "kernel32" (ByVal Locale As Long) As Boolean
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
Private Declare Function LocaleNameToLCID Lib "kernel32" _
(ByVal lpName As LongPtr, dwFlags As Long) As Long
#End If

Private Sub Test()
'Get the locale identifier for French (Canada)
Dim frCa As Long
frCa = LocaleNameToLCID(StrPtr("fr-CA"), 0)
'Make sure there function succeeded.
If result = 0 Then
'Cache the current locale
Dim userLocale As Long
userLocale = GetUserDefaultLCID
'Switch to French (Canada)
If SetThreadLocale(frCa) Then
'en français
'...
'switch back
SetThreadLocale userLocale
End If
End If
End Sub

相关功能的文档链接如下:

关于vba - 使用 VBA 将区域格式更改为另一种语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51620085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com