由亂碼引發的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程序的語言選擇的是中文,改成日本語就能夠了。

 

相關文章
相關標籤/搜索