我在 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 函数(最终可能有助于最终结果),但它们似乎对这种情况没有帮助。
一位同事建议我可能需要先查看 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 函数的空白字符串(除非语法不正确)。
完整的步骤如下。
=Phonetic(reference)
其中 [reference] 是单元格的名称,即。[A2] - 您可以 不是 直接将字符串输入到此单元内函数中)。
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/