使用 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 類型或字符串才能工作。 如果它是變體,則該過程將執行,但不會將任何內容傳輸到表中。 按順序將數組元素傳輸到第二個數組,同時將它們轉換為 double 類型 (CDbl),效果很好。
還應該注意的是,數組必須是 base0 才能按預期工作。 如果它是 base1,那麼它會移動數據並錯過第一行/添加無效的最後一行。
謝謝
回复:使用 VBA 自動化大多數變量使用 VB/VBA 中的基礎變體類型。我認為,如果您使用循環在 VB 端填充數組,然後傳遞該數組,而不是單獨設置單元格值,您會發現性能要快得多。使用單個單元格情況時,自動化調用之間的進程間通信時間將導致速度急劇下降。
在我引用的示例中,我確實將數組創建為 Double 或 String。但是,它們作為變體數組傳遞(轉換是隱式的)。如果您在對象瀏覽器中查看 SetDataVector 的方法簽名,您將看到 JMP 實際上需要一個變體數組。因此,您至少應該嘗試將變體數組從 Excel 範圍傳遞到 JMP。如果類型無法隱式轉換,則必須單獨複製元素。
布賴恩·科科倫
JMP開發
回复:使用 VBA 自動化是的,這有幫助。 我現在可以成功使用函數“SetDataVector”(前提是數組類型為“Double”或“String”)。 不幸的是,要在數組和 Excel 範圍之間傳遞數據,數組必須是“Variant”。 因此,“SetCellVal”和循環遍歷數組可能仍然是我的情況下的最佳選擇。
謝謝。
回复:使用 VBA 自動化JMP 安裝中包含的數據表自動化示例程序包含語法示例。如果您查看“設置矢量”按鈕後面的代碼,您就會看到它。實在太長了,無法將整個內容髮佈到這裡。示例程序位於安裝目錄下。對於 JMP 11,這將為 C:\Program Files\SAS\JMP\11\Samples\Automation\Visual Basic Samples\Data Table .NET 。
我希望這有幫助。
布賴恩·科科倫
JMP開發