首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加载.js文件作为Jscript Scriptcontrol对象

如何加载.js文件作为Jscript Scriptcontrol对象
EN

Stack Overflow用户
提问于 2017-06-06 03:44:27
回答 3查看 1.4K关注 0票数 0

我知道将js加载到VBA中有点傻,但我需要加载Google的libphonenumber库来执行一大堆电话号码的分析。

我尝试修改以下借用自here的代码,但编译后的库太大,无法插入到Vba代码中。

有没有办法从文件中加载.js库呢?谢谢!

代码语言:javascript
复制
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

更新。

这应该是一个可以工作的代码,但是由于某些原因不能工作:

代码语言:javascript
复制
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

有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2017-06-06 03:56:46

将库从文件系统读入一个字符串:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2018-12-07 15:06:39

可能是这样的:

函数loabdjs(x为字符串)

..。

..。

loadjs =输出

End函数

票数 0
EN

Stack Overflow用户

发布于 2019-08-12 02:32:54

我知道这个问题很老,但对于任何想要答案的人来说,这是一个有效的例子。

代码语言:javascript
复制
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 Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44376533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档