В нашей компании много рабочих книг, которые изначально были сохранены на немецком языке.Следовательно, переменная ThisWorkbook
отсутствует.Вместо этого он называется DieseArbeitsmappe
.Использование ThisWorkbook
в коде приводит к ошибке VBA.
Я попытался переименовать DieseArbeitsmappe
в ThisWorkbook
с кодом ниже.
Private Sub RenameThisWorkbookToEnglish()
Dim TmpWorkbook As Object
On Error Resume Next
'Was this saved in German?
Set TmpWorkbook = ActiveWorkbook.VBProject.VBComponents("DieseArbeitsmappe")
If err.Number = 0 Then
Debug.Print ("German Workbook.")
TmpWorkbook.Module.CodeName = "ThisWorkbook"
TmpWorkbook.Name = "ThisWorkBook"
TmpWorkbook.CodeName = "This Workbook"
Exit Sub
End If
On Error GoTo -1
End Sub
Function ErrorIsThisWorkBookBad() As Boolean
On Error GoTo ErrLabel
ErrorIsThisWorkBookBad = Not (ThisWorkbook.CodeName = "ThisWorkbook")
Exit Function
ErrLabel:
ErrorIsThisWorkBookBad = True
End Function
Я назвал этот код в Private Sub Auto_Open()
Private Sub Auto_Open()
RenameThisWorkbookToEnglish
If ErrorIsThisWorkBookBad Then
Debug.Print ("Workbook Is Bad.")
End If
End Sub
Этот код сообщает как плохой.VBE показывает модуль ThisWorkbook
, но его имя по-прежнему DieseArbeitsmappe
.
Несмотря на то, что Debug.Print
в Auto_Open
сообщает о плохом, более поздняя функция нажатия кнопки, которая использует ThisWorkbook
, хороша,Затем сохраните результаты в нескольких книгах ThisWorkbook (например, ThisWorkbook
, ThisWorkbook1
).
Так что это отчасти работает, но не совсем.
Другие примечания: на моем компьютере установлен только английский язык,У меня нет доступа ко всем электронным таблицам, но я пишу VBA, которая будет в них вставлена.
Основной вопрос: Как изменить локализацию или ???сделать ThisWorkbook
допустимой переменной?