由乱码引发的VBA错误

由乱码引发的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程序的语言选择的是中文,改成日本语就能够了。

 

相关文章
相关标签/搜索