JavaScript Functions With in VBA: The Merger
Include a reference to ‘Microsoft Script Control 1.0’ as explained below, before proceeding with further JavaScript tricks in this page.
- Goto Menu -> Tools -> Reference
- Search for “Microsoft Script Control 1.0’ in the listbox and enable it.
Only if this reference is included, the VBScript or JavaScript commands that you are going to code inside VBA will be executed.
Note: With this article, we are not going to execute any external VBS or JS file, instead we are going to make VBA to execute the Scripts within Excel itself.
Coding Scripts inside VBA
As per Microsoft documentation, a script can be executed within a VBA in 4 different methods that is explained in detail in this page. In our examples we are only going to use ‘Run’ & ‘Eval’ methods.
Sub JavaScript_in_VBA() 'Go to Menu -> Tool -> References -> Microsoft Script Control 1.0 & Enable by Clicking it Dim jsObj As New ScriptControl Dim InputValue1 As Integer, InputValue2 As Integer, Result As Integer 'Get Sample Parameters InputValue1 = ThisWorkbook.Sheets(1).Cells(1, 1) InputValue2 = ThisWorkbook.Sheets(1).Cells(1, 2) 'Define Scripting Language jsObj.Language = "JScript" With jsObj 'Add JavaScript Code to Script Control Object .AddCode "function xProduct(a,b) {return (a*b);}" 'Execute Added Script & Get result Result = .Run("xProduct", InputValue1, InputValue2) 'Result = .Eval("xProduct( 1, 2)") End With ThisWorkbook.Sheets(1).Cells(1, 3) = Result End Sub Sub VBScript_in_VBA() Dim vbsObj As New ScriptControl vbsObj.Language = "VBScript" With vbsObj .AddCode "function xGetDate() xGetDate = Date End Function" MsgBox .Run("xGetDate") MsgBox .Eval("xGetDate()") End With End Sub
Why we Need a JavaScript or VBS within VBA?
Sometimes, we will find built in functions in other programming languages. It would be tough to change the whole application from one programming language to another just because the other has few advanced functions.
In these situations, these kind of inter operable techniques such as this JavaScript inside VBA would save lot of time and effort. For example, JavaScript has enhanced library routines to handle JSON data which is tough to manipulate within VBA. In such case, we can make use of this technique and refer JSON libraries within VBA.
Hi Team,
I am trying to attach an object ( Say Excel document ) into a column .
Then I am trying to code to send this file into attachment using outlook.
Even I am able to search into Google, can you please help me out ?
Are you still creating wonderful articles such as this, expanding further?
Thanks for the comment. But, I am not able to understand the context about this comment? Did it work out for you? or
Are you looking for any specific enhancements like this?