检测设置 Excel 所用的语言并将其显示在文件的单元格中

Ale*_*x O 5 excel vba excel-formula

我正在设计一组相关的excel文件,它们之间是相关的。目标是引用彼此文档的宏可以在任何给定的计算机/路径中工作。出于这个原因,我使用了一组相对路径,它可以让宏正常工作。

我使用了以下功能:

=+CELDA("nombrearchivo";$A$1)
Run Code Online (Sandbox Code Playgroud)

"nombredearchivo""filename"英文的意思。

这里的问题是,此功能仅在计算机设置为西班牙语时才有效,但是当文件传输到英语设置的计算机时,它会将 de function CELDA 转换为 CELL,而不是“nombrearchivo”。

为了解决这个问题,我曾考虑尝试在单元格中显示 Excel 设置的语言,然后用三种主要语言编写一个 if 函数,该函数将显示 nombrearchivo、文件名或任何其他语言的相同内容。

是否可以在单元格中显示设置 excel 所用的语言?

目标是宏可以在任何给定的计算机和路径上工作。

Dor*_*ian 5

这将返回一个lang代码到这里了解LCID是什么..

在此处获取所有 LCID 代码含义的列表

例如:1036 =法语 - 标准

dim lang_code as long
lang_code = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
Run Code Online (Sandbox Code Playgroud)

Application.LanguageSettings 文档在这里


Fox*_*rns 2

这个答案完全来自这个来源:

https://www.mrexcel.com/forum/excel-questions/617870-language-code-french-spanish-spanish.html

因此,所有功劳均归原作者 Leith Ross 所有:

' Written: March 01, 2012
' Author:  Leith Ross
' Summary: Converts a Language Code Identifier (LCID) into the language name.

Private Declare Function GetLocaleInfoA _
    Lib "kernel32.dll" _
        (ByVal Locale As Long, _
         ByVal LCType As Long, _
         ByVal lpLCData As String, _
         ByVal cch As Long) _
    As Long

Function GetLanguageName(ByVal LCID As Long) As String

    Const LOCALE_SENGLANGUAGE As Long = &H1001
    Const LOCALE_SENGCOUNTRY As Long = &H1002

    Dim Buffer As String
    Dim BuffSize As Long
    Dim RetVal As Long

        BuffSize = GetLocaleInfoA(LCID, LOCALE_SENGLANGUAGE, 0, 0)
        Buffer = String(BuffSize, Chr(0))

        RetVal = GetLocaleInfoA(LCID, LOCALE_SENGLANGUAGE, Buffer, BuffSize)

        If RetVal > 0 Then GetLanguageName = Left(Buffer, BuffSize - 1)

End Function
Run Code Online (Sandbox Code Playgroud)

要测试它,只需输入一个单元格=GetLanguageName(1034)(十进制值),但它也适用于十六进制值,例如=GetLanguageName("&H40A")

我在 Excel 中得到了这个:

在此输入图像描述

要获取您需要输入的十进制数,您可以使用如下内容:

Function GetLanguage() As String
GetLanguage = GetLanguageName(Application.LanguageSettings.LanguageID(msoLanguageIDUI))
End Function
Run Code Online (Sandbox Code Playgroud)

因此,在单元格中键入内容GetLanguage()将返回用户的语言。

在此输入图像描述

希望您能根据您的需要进行调整。