在VBA Excel中设置工作簿语言

时间:2018-06-08 11:38:47

标签: excel vba excel-vba

我有一个工作簿被复制到具有不同区域语言设置的不同用户。

我遇到的问题是,由于区域设置,我构建的一些宏不会起作用,因为它们引用了翻译的值。

示例是日期名称和Year的值。 (Jaar年)。

 ActiveSheet.PivotTables("OpenPO").PivotFields("Years").ShowDetail = False

这是指原始工作簿中名为Year的数据透视表内的选定数据。然而,这会被自动翻译成用户的语言。

为了解决这个问题,我希望能锁定或设置这种特定的工作簿语言。

不幸的是,这不是一个选择, 在复制之前运行宏, 为每个用户设置区域设置, 为每个用户设置Excel区域设置, 为每种语言重写宏。

我一直在寻找解决方案,但尚未找到答案。我真的希望有人在这里帮助我。

我最理想的解决方案是设置工作簿语言的简单VBA代码。

1 个答案:

答案 0 :(得分:1)

在你传递的例子中,"年"作为字符串:

 ActiveSheet.PivotTables("OpenPO").PivotFields("Years").ShowDetail = False

如果荷兰Excel期待Jaar,那么您需要一些特定的方式来告诉它。 E.g:

Option Explicit

Public Sub TestMe()

    Dim yearIndependent As String

    Select Case Application.LanguageSettings.LanguageID(msoLanguageIDUI)
        Case 1043: 'Dutch
            yearIndependent = "Jaar"
        Case 1031: 'German
            yearIndependent = "Jahr"
        Case Else: 'English (default)"
            yearIndependent = "Year"
    End Select    

    ActiveSheet.PivotTables("OpenPO").PivotFields(yearIndependent).ShowDetail = False

End Sub

如您所见,您必须重写整个代码。好消息是,没有那么多依赖于语言的单词,因此您可以使用一些MVC architecture,在单张纸上写下单词并从那里读取。如果你在函数中导出逻辑,返回正确的字符串,那将是非常可以消化的。