VBAオートメーションを使用する<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />これは後続のVBA自動化の質問です。
VBAオートメーションを使用して、Excelからjmpデータテーブルを作成する必要があります。
現在、私はこれを "SetDataVector"で行い、ソース配列の各要素をループしています。ベクトル形式 "SetDataVector"を使用しようとする試みはすべて成功していません。
"SetDataVector"関数を正しく利用するためのあなたの助けは大いに感謝されるでしょう。
ありがとう、
ピート
再:VBAオートメーションを使用する私がVBAオートメーションパスに沿って移動するとき、それはExcelとJMPの間のコミュニケーションにおけるデータ型の暗黙の変換があることを知っていることは役に立ちます。ありがとうございます。
再:VBAオートメーションを使用するフォローしていただきありがとうございます。
'SetDataVector'は、そのソース配列がdouble型であること、または動作するために文字列であることが必要であるようです。バリアントの場合、プロシージャは実行されますが、内容はテーブルに転送されません。配列型を2番目の配列に順次転送しながら、それらをdouble型(CDbl)に変換してもうまくいきます。
また、期待どおりに動作するには、配列がbase0である必要があります。base1の場合、データをシフトして最初の行を見逃したり、無効な最後の行を追加したりします。
ありがとう
再:VBAオートメーションを使用するほとんどの変数はVB / VBAの基になるバリアント型を使用します。 ループを使用してVB側の配列に値を設定してから、その配列を渡すと、セル値を個別に設定するのではなく、パフォーマンスが大幅に向上すると思います。 オートメーション呼び出し間のプロセス間通信時間は、個々のセルケースを使用するときに劇的に遅くなります。
私が参照した例では、配列をDoubleまたはStringとして作成しています。 ただし、それらはバリアント配列として渡されます(変換は暗黙的です)。 オブジェクトブラウザでSetDataVectorのメソッドシグネチャを見ると、JMPが実際にはバリアント配列を期待していることがわかります。 そのため、少なくとも、バリアント配列をExcelの範囲からJMPに渡すだけで試してください。 型を暗黙的に変換できない場合は、要素を個別にコピーする必要があります。
ブライアン・コーコラン
JMP開発
再:VBAオートメーションを使用するはい、これは助けになりました。これで、関数「SetDataVector」を正常に使用できます(配列のタイプが「Double」または「String」の場合)。残念ながら、配列とExcelの範囲との間でデータをやり取りするには、配列を 'Variant'にする必要があります。そのため、'SetCellVal'と配列のループ処理は、まだ私の場合では最良の選択肢となるでしょう。
ありがとうございました。
再:VBAオートメーションを使用するJMPインストール済み環境に含まれているData Table自動化サンプル・プログラムに構文の例があります。 "Set Vector"ボタンの後ろのコードを見ればわかるでしょう。 ここに全部を投稿するには長すぎます。 サンプルプログラムは、インストールディレクトリの下にあります。 JMP 11の場合、これはC:¥Program Files¥SAS¥JMP¥11¥Samples¥Automation¥Visual Basic Samples¥Data Table .NETになります。
それが役立つことを願っています。
ブライアン・コーコラン
JMP開発