Excelmacros,用波斯语文本读取单元格
我创build了一个简单的Excel工作表。
这是我的macros代码:
Sub MyMacro() Sheets("Sheet1").Select A$ = Cells(1, 1) MsgBox (A$) End Sub
它工作正确,如果单元格1,1包含一个英文单词或数字。
但是,当我把一些波斯/阿拉伯语文本到单元格1,1(例如: سلام
)并运行macros,macros显示????
。 (它显示了一个而不是每个波斯人的性格)
如何解决这个问题呢?
您可以使用Windows API消息框,而应该显示大多数的编码types
例如,这进入了一个MODULE
Option Explicit #If Win64 Then Private Declare PtrSafe Function User32MsgBox Lib "user32" Alias "MessageBoxW" _ (Optional ByVal hWnd As Long, Optional ByVal Prompt As Long, _ Optional ByVal Title As Long, Optional ByVal Buttons As Long) As Long #Else Private Declare Function User32MsgBox Lib "user32" Alias "MessageBoxW" _ (Optional ByVal hWnd As Long, Optional ByVal Prompt As Long, _ Optional ByVal Title As Long, Optional ByVal Buttons As Long) As Long #End If Public Function MessageBoxW(cPrompt As String, _ Optional cButtons As VbMsgBoxStyle = vbOKOnly, _ Optional cTitle As String) As Long MessageBoxW = User32MsgBox(0, StrPtr(cPrompt), StrPtr(cTitle), cButtons) '*****Probably need to convert StrPtr to 32bit long on 64bit - see next line 'MessageBoxW = User32MsgBox(0, cLng(StrPtr(cPrompt)), CLng(StrPtr(cTitle)), cButtons) End Function Sub MyMacro() Dim txt As String txt = Sheets("Sheet1").Cells(1, 1).Value MessageBoxW (txt) End Sub
目前我还没有一个64位的机器,所以你可能需要在64位机器上将StrPtr转换为32位长