我知道将js加载到VBA中有点傻,但我需要加载Google的libphonenumber库来执行一大堆电话号码的分析。
我尝试修改以下借用自here的代码,但编译后的库太大,无法插入到Vba代码中。
有没有办法从文件中加载.js库呢?谢谢!
Function encodeURL(str As String)
Dim ScriptEngine As ScriptControl
Set ScriptEngine = New ScriptControl
ScriptEngine.Language = "JScript"
ScriptEngine.AddCode "function encode(str) {return encodeURIComponent(str);}"
Dim encoded As String
encoded = ScriptEngine.Run("encode", str)
encodeURL = encoded
End Function更新。
这应该是一个可以工作的代码,但是由于某些原因不能工作:
Function loabdjs(x As String)
Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
Dim script As String
Dim fs As Scripting.TextStream
''' CODE : "function encode(str) {return encodeURIComponent(str);}"
Set fs = fso.OpenTextFile("test.js", ForReading, False)
MsgBox ("Never reached this point")
script = fs.ReadAll
fs.Close
Dim ScriptEngine As ScriptControl
Set ScriptEngine = New ScriptControl
Dim output As String
ScriptEngine.Language = "JScript"
ScriptEngine.AddCode script
output = ScriptEngine.Run("encode", x)
loadjs = output
End Function有什么想法吗?
发布于 2017-06-06 03:56:46
将库从文件系统读入一个字符串:
Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
Dim fs As Scripting.TextStream
Set fs = fso.OpenTextFile( "libphonenumber.js", ForReading, False )
Dim script As String
script = fs.ReadAll
fs.Close()
scriptEngine.AddCode script发布于 2018-12-07 15:06:39
可能是这样的:
函数loabdjs(x为字符串)
..。
..。
loadjs =输出
End函数
发布于 2019-08-12 02:32:54
我知道这个问题很老,但对于任何想要答案的人来说,这是一个有效的例子。
Sub loadFile()
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim fs, f, ts, script
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile("C:\test.js")
Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
script = ts.ReadAll
Debug.Print script
ts.Close
End Subhttps://stackoverflow.com/questions/44376533
复制相似问题