掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VC++、VB、VBA共通DLLを作成するには?〜その2〜 (ID:68081)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VBAにわたすときにString型では勝手にAnsi→Unicode変換がおこなわれてしまう。→(1) よって、BSTRにUnicodeで文字列を格納しても、UnicodeをAnsiとしてUnicode変換してしまうようです。 (よって全く使えない文字列になる) ですので、BSTRだけれどもAnsi文字列を格納する必要があるため、 SysAllocStringではなくSysAllocStringByteLenを使うのです。 >ということは、いったんマルチバイトに変換してから>SysAllocStringByteLen >を行うという事でしょうか(コピー元の引数がBSTR型なので)? そうです。 >そうなるとSample03Wが該当しますよね? ですから、VBAからは(1)が自動的に行われるのでサンプルで示した 〜W系 の関数は使えません。 (VB.NETはMarshalAs属性を使って指定できます。)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.