掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
エクセルセル範囲を代入したVariant型変数をC/C++で作るDLLに渡すには? (ID:70066)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Rangeオブジェクトの配列になるので、VARIANT型の変数には、 ディスパッチポインタが格納されるはずです。 vtメンバ変数で確認し、適した使用をしないと動くわけはないでしょう。 ディスパッチポインタから使えるようにするのは面倒です。 たぶん文字列で渡していたよりも遅くなると思われます。 codeprojectのはRangeオブジェクトで渡しているわけではないです。 数値であれば(VBA側で)double型にして渡しているので、文字列から変換するよりも若干早くなるのかも。 VARIANT型の文字列配列を得るのであれあば、 >myVariant = Range("A1:B2") ではなく(これだとRangeオブジェクトの配列=ディスパッチポインタの配列) Valueプロパティを使ってください。 Dim v As Variant Dim i As Integer, j As Integer v = Range("A1:B2").Value ' 中身を確認してみる For i = LBound(v) To UBound(v) For j = LBound(v, 2) To UBound(v, 2) Debug.Print CStr(v(i, j)) & "(" & TypeName(v(i, j)) & ")" Next Next 数値が入っているとき、VARIANT型には数値で格納されてしまうので、 DLL側でvtをチェックして文字列に変換するか、VBA側で、Valueプロパティを使わず、 文字列で全てわたすようにすることが必要でしょう。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.