如果你以前見過類似的東西,我會盡我所能去道歉。我試圖得到一個明確的答案,我想我已經看到了在另一個論壇上回答的問題 - 我只是非常希望我誤解了答案。總之,我想編寫vba subs /函數,它們通過C#業務邏輯層和ExcelDNA從SQL數據庫獲取參數和檢索數據。ExcelDNA:帶參數的命令,返回數據類型
C#圖層是.Net解決方案的一部分,它將來自多個應用程序的請求封送到多個數據庫。 Config是集中管理的,DataAccess對象是在工廠運行時創建的。
返回類型可能因請求應用程序而異 - 相同的數據可能會被請求爲Dictionary,DataTable等。根據用戶權限/訪問權限,輸入參數等,業務層將對數據執行各種聚合和計算操作然後將對象返回給請求的應用程序。
不幸的是,一個用戶有一個基於Excel的應用程序,我現在必須集成。從閱讀關於VSTO,COM,Automation Add-in和ExcelDNA,我決定最好將項目添加到與ExcelDNA接口的解決方案中。但是,經過許多嬰兒步驟,從單元格中的SQL返回簡單的字符串到Excel函數,我現在需要嘗試並返回一個DataTable(這裏靈活)到VBA函數。該VBA會採取一些參數,如數據庫名稱,環境(PROD,UAT,DEV),ModelRunId,startDate,endDate ....
但從我讀過的,這是不可能的。有沒有人做到這一點?我正在編寫一個簡單的WinForms應用程序,並在某些網格上公開「導出到Excel」功能 - 讓Excel用戶完成腿部工作....
直接寫入SQL服務器並使用像CopyFromRecordSet這樣的方法不是一種選擇。
在此先感謝
ExcelDNA的目標是使其創建.NET UDF的效率和簡單 - 您爲什麼需要創建VBA UDF? – 2011-03-10 08:42:24
如果您的問題是如何使Excel UDF向多個單元格返回值表,請查看創建數組UDF。 – 2011-03-10 08:47:34
我不想在VBA中使用UDF。所有功能都在C#圖層中。它執行數據檢索,聚合,計算字段,根據安全規則刪除數據等。我只想從VBA調用這些C#函數。該調用將不得不包含一些參數。返回的表的大小可以根據列和行而變化,所以我認爲這可能會使vba中的數組變得困難。也許我可以返回DOM文檔? – JamesR 2011-03-11 01:20:08