由乱码引发的VBA错误
一、有位日本同事,拿了一个Excel 2003给我,说是点击就出现下面的错误。我也拿到本身的电脑上试,我用的是Excel 2010,仍是同样的错误。

二、打开Excel帮助,尝试解决方法,①用
64位的office打开也不行.②把Excel转换成高版本也不行.

三、用Alt+F11打开VBA,但又不知道密码,但根据帮助文件显示,多是VBA代码有错误。决定先破解VBA密码。

四、新建一个Excel工做簿,Alt+F11 打开VBA编辑器,新建一个模块 ,复制如下代码。
'移除VBA编码保护
Sub MoveProtect()
Dim FileName As String
FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
If FileName = CStr(False) Then
Exit Sub
Else
VBAPassword FileName, False
End If
End Sub
'设置VBA编码保护
Sub SetProtect()
Dim FileName As String
FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
If FileName = CStr(False) Then
Exit Sub
Else
VBAPassword FileName, True
End If
End Sub
Private Function VBAPassword(FileName As String, Optional Protect As Boolean = False)
If Dir(FileName) = "" Then
Exit Function
Else
FileCopy FileName, FileName & ".bak"
End If
Dim GetData As String * 5
Open FileName For Binary As #1
Dim CMGs As Long
Dim DPBo As Long
For i = 1 To LOF(1)
Get #1, i, GetData
If GetData = "CMG=""" Then CMGs = i
If GetData = "[Host" Then DPBo = i - 2: Exit For
Next
If CMGs = 0 Then
MsgBox "请先对VBA编码设置一个保护密码...", 32, "提示"
Exit Function
End If
If Protect = False Then
四、获得生成的文件,再打开生成的excel, 是没有VBA密码的。VBA代码显示是因为出现乱码引发的出错。

五、解决方法是安装个Microsoft AppLocale,用这个软件来打开日语编写的VBA Excel文件就不会出错。但日本同事用的是日语操做系统,为何也会这样呢?后来查了一下,是因为他电脑的非Unicode程序的语言选择的是中文,改成日本语就能够了。
