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