【vba源码】 简体与繁体转换

时间:2024-12-20 07:41:45

Hi,大家好呀!

最近呢天气变冷了,感觉码字都码不动了,天冷了,就想冬眠,啥也不想动了,不知道大家是不是也和我一样呢?这周又到了和大家分享一些功能和技术的时间,这周我又弄了点啥呢?看我慢慢给你讲!看完之后大家觉得写的还可以,那就给我一键三连吧,原创不易,谢谢大家啦!

最近,我正在搞一个小系统,在弄的其中某个内容时,发现有这样一个需求,需要把简体中文转换成繁体中文,当时,我第反应是这个是翻译的事情,难道要接某个翻译软件的接口?或者是要我把需要翻译的内容放到数据库里,自己来建个库?思来想去的,总感觉麻烦,后来,在多方的努力下,找到了一个API,具体的实现效果怎么样,我们来瞧瞧看!

01、创建窗体

老规矩,我们先来做一些准备工作,这里我需要创建一个窗体,在窗体上放4个文本框,2个按钮。

02、添加自定义函数

这次代码我们分2部走,第一步,我们先把API放到通用模块。这么做是为了让整个系统都能调用,具体代码如下:

Public Declare Function LCMapString Lib "kernel32" Alias "LCMapStringA" (ByVal Locale As Long, _

ByVal dwMapFlags As Long, ByVal lpSrcStr As String, ByVal cchSrc As Long, ByVal lpDestStr As String, ByVal cchDest As Long) As Long

Public Declare Function lStrLen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long

然后,我们再自定义一个通用函数 

Public Function Conv_JianFan(ByVal strString As String, Optional ByVal iMode As Integer = 0) As String

    Dim lStrLength As Long

    Dim strNew As String

    Const J2F_MAPFLAG = &H4000000

    Const F2J_MAPFLAG = &H2000000

    Conv_JianFan = ""

    lStrLength = lStrLen(strString)

    strNew = Space(lStrLength)

    If iMode = 0 Then

        LCMapString &H804, J2F_MAPFLAG, strString, lStrLength, strNew, lStrLength

    Else

        LCMapString &H804, F2J_MAPFLAG, strString, lStrLength, strNew, lStrLength

    End If

    Conv_JianFan = strNew

End Function

03、添加单击事件

接着,我们就可以在窗体的两个按钮分别添加单击事件了,具体如下:

'转繁体

Private Sub btnFan_Click()

   Me.txtFanti = Conv_JianFan(Me.txtJianTi, 0)

End Sub

'转简体

Private Sub btnJian_Click()

    Me.txtJian = Conv_JianFan(Me.txtFan, 1)

End Sub

04、运行测试

最后,我们就可以来看看运行的效果了。

好了,大家快去测试一下吧!