Javascript VBA for Excel,如何将.js文件作为Jscript脚本控件对象加载
我知道将js加载到VBA中有点傻,但我需要通过Google加载libphonenumber库来对大量电话号码进行分析 我试图改编从中借用的以下代码,但编译后的库太大,无法插入到Vba代码中 有没有办法从文件中加载.js库? 谢谢 更新。 这应该是一个工作代码,但由于某些原因不起作用: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
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测试,但仍然不起作用。我错过什么了吗?(见《华盛顿邮报》更新)