2013-04-09 13 views
7

Aktualnie tworzę skoroszyt programu Excel, który obsługuje symulację typu Monte Carlo. Kod symulatora jest obecnie w Javascript, a przeniesienie do VBA wydaje się nietrywialne, biorąc pod uwagę brak doświadczenia zespołu w tym języku. Tak, byłem w stanie włączyć składniki javascript do pliku WSC, który działa dobrze. (Uproszczony przykład poniżej.)Używanie skryptów JavaScript w programie Excel

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 

Niestety, wymaga to mnie do zorganizowania kodu javascript lub polegać na użytkowników niewykwalifikowanych zaktualizować ścieżki bezwzględnej. Czy istnieje samodzielne rozwiązanie? Wolałabym przechowywać wszystko w jednym pliku .xlsm, który można wysłać e-mailem do użytkowników.

+1

Mogłeś zapisać js w komórce (jeśli nie ma tam zbyt dużo kodu) i następnie używać, aby napisać plik do folderu temp użytkownika. –

+0

Podoba mi się ten http://chandoo.org/wp/2010/05/06/data-tables-monte-carlo-simulations-in-excel-a-comprehensive-guide/? – deusxmach1na

+0

Idea folderu tymczasowego jest interesująca, która powinna działać. Będę musiał to sprawdzić. Ostateczny kod symulacyjny będzie prawdopodobnie dość skomplikowany, ale wątpię, by przekroczył on kilkaset KB. Samouczek Chandoo używa programu Excel, a nie VBA lub JS. Niestety, ta symulacja ma o wiele za dużo punktów rozgałęzionych do modelu z arkuszem kalkulacyjnym (wymagałoby to około 100 milionów komórek). – Izomiac

Odpowiedz

1

Powinieneś być w stanie hostować JS w komponencie COM i używać WSH, aby uzyskać do niego dostęp.

Zobacz przykład tutaj: How can I use JavaScript within an Excel macro?

+0

To właśnie zrobiłem, AFAIK (może moja terminologia nie jest poprawna?). Jak jednak rozumiem, to podejście wymaga rejestracji WSC lub utrzymania go w przewidywalnej lokalizacji. Nie przewiduję, że użytkownicy końcowi będą wystarczająco doświadczeni, aby to zrobić. – Izomiac

Powiązane problemy