vba - 日文键盘编程 "Henkan"「変换」按钮

标签 vba excel ime

我在 Excel 2010 中对 VBA(7.0) 进行编程,并试图制作一个宏,将字符串变量(包含汉字)更改为它的平假名成分。据我所知,没有特定于 VBA 的方法可以做到这一点。因此,我认为解决方法是尝试模仿日文键盘上的 [henkan] 「変换」按钮。

对于那些不习惯日文键盘的人,「変换」按钮用于将书写时的组成平假名更改为汉字组合(同样突出显示现有文本并按下它将提供将其更改为其他汉字及其组成部分的选项平假名或片假名)。按下该按钮将从 IME 中调出一个列表,其中列出了您输入的可能选择。

我从 here 收集到和 here有问题的按钮的扫描码是 79。

将 1 + 1 放在一起(得到 3)并尝试下面的代码并没有产生任何结果。

Private Sub test_Click()
  Sheets("Main").Range("A1").Select   '<--- A1 contains a Kanji Compound
  Application.SendKeys (79)   '<--- Both (79) and ("79") were tried
End Sub

我注意到有以下 VBA 函数(最终可能有助于最终结果),但它们似乎对这种情况没有帮助。
  • StrConv(可以转换平假名 <> 片假名,但不能转换汉字)
  • 语音学
  • .Add(可以添加汉字的读法(如汉字注音),但这需要用户输入并且不是自动的)。
  • .CharacterType(返回或设置语音类型;平假名、片假名等)
  • IME(主要用于设置输入规则)

  • 一位同事建议我可能需要先查看 IME API,看看我是否可以访问它(API 的权限),其次它是否会让我知道访问 key 的方式。然而,我对 API(尤其是 IME)的经验是零。

    是否有一种特定于 VBA 的方式来模拟 Kanji -> Hiragana Process(只需要一种方式 Kanji 到 Hiragana 的转换)?

    如果做不到这一点,是否有一个可以发送键“変换”按钮并选择平假名选项的过程?

    最佳答案

    虽然我不喜欢回答自己的问题,但我已经找到了解决方案。

    为了使 Excel [PHONETIC] 功能正常工作,必须安装 [Japanese Editing Tools]。这些可以在语言包中找到(对于 Excel 2010,每个 25 美元)或通过从日语 Microsoft Office [2010] 安装盘安装 - 只需将工具安装到英语 Office 版本即可(从而减少对完整的日文版安装)。

    未能安装 [Japanese Editing Tools] 将意味着 [PHONETIC] 函数将始终包含用于 in-cell 和 VBA 函数的空白字符串(除非语法不正确)。

    完整的步骤如下。

  • 为您的 Microsoft Office 版本安装 Microsoft Office 日语编辑工具(MO2010 > 安装 JET MO2010 版本)
  • 使用 [PHONETIC] 功能。
  • 这可以用作单元格内函数,格式为
  • =Phonetic(reference)
    其中 [reference] 是单元格的名称,即。[A2] - 您可以 不是 直接将字符串输入到此单元内函数中)。
  • 在 VBA 中,函数是 Application.GetPhonetic(text)

  • 其中 [text] 要么直接输入,要么是字符串变量,要么是对带有字符串的单元格的引用。
  • 假设在将汉字输入用户表单文本框时需要自动平假名。

  • Kanji Input TextBox => [KanjiBox],平假名阅读 TextBox => [YomiBox]
    Private Sub KanjiBox_Change()
        'Finds last entry in Range (for this example, range is in the [B] column)
        lastEntry = Sheets("Entries").Range("B1048576").End(xlUp).Row
        'Finds if entry already exists in range, if it does;_
         launches MsgBox Warning and clears all fields. Range starts from Row 7.
        For entryRow = 7 To lastEntry
            If KanjiBox = Sheets("Entries").Range("B" & entryRow) Then
                MsgBox "There is already an entry for " & KanjiBox
                KanjiBox = ""
                YomiBox = ""
                Exit For
            End If
        Next entryRow
        'This sets the [YomiBox] as a Hiragana reading of the Kanji_
         (Uses StrConv to change the Phonetic result from Katakana to Hiragana)
        YomiBox = StrConv(Application.GetPhonetic(KanjiBox), vbHiragana)
        'The following fixes leftover reading text when backspacing
        If KanjiBox = "" Then
            YomiBox = ""
        End If
    End Sub
    

    使用这种方法,不需要「変换」键仿真。

    任何在不使用第三方应用程序的情况下模拟「変换」键作为按键事件的方法,我仍然未知。

    关于vba - 日文键盘编程 "Henkan"「変换」按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33769827/

    相关文章:

    excel - 如何使用 Excel 的 UDF 数组公式正确读取每个单元格?

    类对象字典的vba深层复制/克隆问题

    excel - 视觉基础。错误返回 1

    android - 日本汉字手写输入

    swift - 如何在 Swift 中为 Mac OS X 开发一个简单的输入法?

    excel - VBA相当于Excel的mod函数

    vba - "System resource exceeded"更新记录集时,可能在其他点

    excel - 如何制作自定义填充 handle 图案?

    excel - 打开多个 Excel 实例会导致 VBA 问题吗?

    ime - Windows 10下的MSKLC : Create custom keyboard layout which supports IME (input method) for Chinese and combined input in Spanish