2013-04-09 23 views
7

我目前正在創建一個運行蒙特卡羅類型模擬的Excel工作簿。儘管模擬器代碼目前使用Javascript,並且考慮到團隊對這種語言的經驗不足,所以完全移植到VBA似乎並非微不足道。所以,我已經能夠將JavaScript組件合併到一個WSC文件中,它運行良好。 (簡體下面的例子。)在Excel中使用Javascript

Sub Simulate() 
     Set ATPSim = GetObject("script:http://www.example.com/ATPSim.wsc") 
     'Set ATPSim = GetObject("script:C:\ATPSim.wsc") 
     Dim ParamOne As Integer 
     ParamOne = Range("B2").Value 
     Dim ParamTwo As Double 
     ParamTwo = Range("B3").Value 
     Dim ParamThree As Double 
     ParamThree = Range("B4").Value 
     Range("B1").Value = ATPSim.simulate(ParamOne, ParamTwo, ParamThree) 
    End Sub 

不幸的是,這需要我主持的JavaScript代碼或依靠單純的用戶更新的絕對路徑。有獨立的解決方案嗎?我寧願將所有內容都放在一個.xlsm文件中,這個文件可以通過電子郵件發送給用戶。

+1

你可以在JS存儲在電池(如果有沒有太多的代碼),然後用它來編寫出文件到用戶的臨時文件夾。 – 2013-04-09 20:23:47

+0

像這樣http://chandoo.org/wp/2010/05/06/data-tables-monte-carlo-simulations-in-excel-a-comprehensive-guide/? – deusxmach1na 2013-04-09 20:23:49

+0

臨時文件夾的想法是一個有趣的應該工作。我得看看它。最終的模擬代碼可能會相當複雜,但我懷疑它會超過幾百KB。 Chandoo教程使用純粹的Excel而不是VBA或JS。不幸的是,這種模擬有太多的分支點用電子表格進行建模(它需要類似於1億個單元的東西)。 – Izomiac 2013-04-11 05:18:44

回答

1

您應該能夠在COM組件中託管JS並使用WSH來訪問它。

在這裏看到的例子:How can I use JavaScript within an Excel macro?

+0

這就是我所做的,AFAIK(也許我的術語不正確?)。據我瞭解,這種方法需要註冊WSC或將其保存在可預測的位置。我不認爲最終用戶足夠精明的做任何一方。 – Izomiac 2013-04-18 23:42:08