シートに記述されている文字列(ハングル文字含む)を取得し、
メッセージボックスに表示したいのですが、
そのままでは文字化けしてしまいます。
MsgBox ActiveWorkbook.ActiveSheet.Cells(1, 1) '(1,1)にはハングル文字
試しに
MsgBox strConv(ActiveWorkbook.ActiveSheet.Cells(1, 1),vbUnicode)
MsgBox strConv(ActiveWorkbook.ActiveSheet.Cells(1, 1),vbFromUnicode)
とかやってみましたがだめでした。
どなたかご教授願います。
よろしくお願いいたします。
Excel VBAのMsgBox関数は、Unicodeに対応していません。
WideバージョンのMessageBox APIで代用してみてください。
====== 呼び出し側 =====
MsgBoxW ActiveWorkbook.ActiveSheet.Cells(1, 1).Value
====== 標準モジュール =====
Option Explicit
Private Declare Function MessageBoxW Lib "User32" _
(ByVal hWnd As Long, _
ByRef lpText As Byte, _
ByRef lpCaption As Byte, _
ByVal uType As Long) As Long
Public Function MsgBoxW( _
ByVal Prompt As String, _
Optional ByVal Button As VbMsgBoxStyle = vbOKOnly, _
Optional Title As String = vbNullString) As VbMsgBoxResult
Dim abytPrompt() As Byte
Dim abytTitle() As Byte
abytPrompt = Prompt & vbNullChar
If StrPtr(Title) = 0 Then
abytTitle = Application.Name & vbNullChar
Else
abytTitle = Title & vbNullChar
End If
MsgBoxW = MessageBoxW(Application.hWnd, abytPrompt(0), abytTitle(0), Button)
End Function
ありがとうございます。
やってみましたところ、
MsgBoxW = MessageBoxW(Application.hWnd, abytPrompt(0), abytTitle(0), Button)
で、以下のようなエラーになりました。
------------------------------
実行時エラー'438':
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
------------------------------
何か設定をしなければならないことがあるのでしょうか?
使用しているExcelのバージョンは何ですか?
もし、2世代前の Excel 2000 (あるいはそれ以前のバージョン)を
使用されているのであれば、ApplicationオブジェクトにHwndプロパティが
用意されていないため、そのようなエラーが発生します。
古いExcelを利用されている場合は、替わりに、GetActiveWindow API や
FindWindow API等で調べた自アプリのウィンドウハンドルを
指定するようにしてみてください。
失礼しました。
Excel2000(SP3)
Windows2000
です。
ツイート | ![]() |