Javascript VBA for Excel,如何将.js文件作为Jscript脚本控件对象加载

Javascript VBA for Excel,如何将.js文件作为Jscript脚本控件对象加载,javascript,vba,excel,Javascript,Vba,Excel,我知道将js加载到VBA中有点傻,但我需要通过Google加载libphonenumber库来对大量电话号码进行分析 我试图改编从中借用的以下代码,但编译后的库太大,无法插入到Vba代码中 有没有办法从文件中加载.js库? 谢谢 更新。 这应该是一个工作代码,但由于某些原因不起作用: Function loabdjs(x As String) Dim fso As Scripting.FileSystemObject Set fso = New Scripting.FileSy

我知道将js加载到VBA中有点傻,但我需要通过Google加载libphonenumber库来对大量电话号码进行分析

我试图改编从中借用的以下代码,但编译后的库太大,无法插入到Vba代码中

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

更新。 这应该是一个工作代码,但由于某些原因不起作用:

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

有什么想法吗?

将文件系统中的库读入字符串:

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

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

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
可能是这样的:

函数loabdjs(x为字符串)

loadjs=输出

终端功能可能是:

函数loabdjs(x为字符串)

loadjs=输出


结束函数

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

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

我知道这个问题由来已久,但对于任何寻求答案的人来说,这是一个有效的例子

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

“编译后的库太大,无法插入Vba代码”是什么意思?我试图简单地将它粘贴到addCode方法中,但它大约有220kb的代码,对于一行来说太长了,太大,无法插入包含下划线的内容。请尝试使用空catch向js函数添加Try-catch块。在VBA调试器中运行代码,并确保错误处理设置正确(即,在错误恢复下一步时不要使用
)。听起来像是
OpenTextFile
失败了。在某个地方会显示一条错误消息,找到它。你说的“编译后的库太大,无法插入Vba代码”是什么意思?我试图简单地将它粘贴到addCode方法中,但它大约有220kb的代码,对于一行来说太长了,太大,无法插入包含下划线的内容。请尝试使用空catch向js函数添加Try-catch块。在VBA调试器中运行代码,并确保错误处理设置正确(即,在错误恢复下一步时不要使用
)。听起来像是
OpenTextFile
失败了。在某个地方会显示一条错误消息,请找到它。谢谢!不幸的是,我没有成功地使用此代码。尝试了一个小小的Helloworld测试,但仍然不起作用。我错过什么了吗?(见帖子更新)谢谢!不幸的是,我没有成功地使用此代码。尝试了一个小小的Helloworld测试,但仍然不起作用。我错过什么了吗?(见《华盛顿邮报》更新)