编写日语键盘 "Henkan" 「変换」按钮

Programming a Japanese keyboard "Henkan" 「変換」 button

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

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

我从 here and 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 功能(可能最终有助于最终结果),但它们似乎无济于事。

一位同事建议我可能需要查看 IME API,首先看看我是否可以访问它(API 的权限),其次它是否允许我知道访问密钥的方式。然而,我对 API'S(尤其是 IME)的体验对 none 来说是零。

是否有一种 VBA 特定的方法来模拟汉字 -> 平假名过程(只需要一种将汉字转换为平假名的方法)?

不行的话,有没有程序可以发送「変换」按钮和select平假名选项?

虽然我不喜欢回答自己的问题,但我找到了解决办法。

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

无法安装[日语编辑工具]将意味着 [PHONETIC] 函数将始终包含单元格和 VBA 中的空白字符串(除非句法不正确)函数。

完整步骤如下。

  1. 为您的 Microsoft Office 版本安装 Microsoft Office 日文编辑工具(MO2010 > 安装 JET MO2010 版本)

  2. 使用[拼音]功能。

    • 这可以用作格式为
    • 的单元格函数

    =Phonetic(reference)

    其中 [reference] 是单元格的名称,即。[A2] - 您可以 NOT 直接将字符串输入到此单元格函数中)。

    • 在VBA中函数是Application.GetPhonetic(text)

    其中 [text] 可以是直接输入的字符串变量,也可以是对带有字符串的单元格的引用。

  3. 假设在用户窗体文本框中输入汉字时需要自动平假名。

汉字输入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

使用此方法,不需要「変换」键模拟。

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