weixin_47730444 2023-09-25 17:31 采纳率: 30%
浏览 19
已结题

vba如何写本地html文件执行js

因为遇到遇到一个rsa加密问题,没有相应的加密库,网上有人说可以用htmlfile执行js,请教下如何写;在补充下我的问题,如下是我遇到的rsa加密函数,里面有一个引用jse库的,请教下怎样写这个vba。
var encrypt = new JSEncrypt();
encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB');
var encrypted = encrypt.encrypt(message);
return encrypted;
}

  • 写回答

12条回答 默认 最新

  • bug菌¹ Java领域优质创作者 2023-09-28 01:07
    关注

    该回答引用ChatGPT,希望对题主有所帮助,如有帮助,还望采纳。


    可以通过VBA里的CreateObject函数创建HTMLFile对象,然后在该对象里面执行JavaScript代码。下面是示例代码:

    Sub runJS()
        Dim html As Object
        Set html = CreateObject("htmlfile")
        ' 加载HTML代码
        html.Open
        html.Write "<html><body><script>function test(){alert('Hello World!');}</script></body></html>"
        html.Close
    
        ' 执行JavaScript代码
        html.parentWindow.execScript "test()"
    End Sub
    

    以上代码加载了一个包含一个函数test的HTML代码,并通过parentWindow对象的execScript方法执行test函数。你可以将你的RSA加密算法写成JavaScript函数,然后在以上代码中执行该函数。

    如果你需要引用外部的JS库,可以将库文件保存在本地,在HTML代码中使用<script>标签引用,例如:

    Sub runJS()
        Dim html As Object
        Set html = CreateObject("htmlfile")
        ' 加载HTML文件
        html.Open "c:\Temp\test.html"
        html.Close
    
        ' 执行JavaScript代码
        html.parentWindow.execScript "var encrypt = new JSEncrypt();"
        html.parentWindow.execScript "encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB');"
        html.parentWindow.execScript "var encrypted = encrypt.encrypt(message);"
        html.parentWindow.execScript "return encrypted;"
    End Sub
    

    以上代码加载了一个名为test.html的本地文件,并执行在代码中定义的JavaScript代码。注意JSEncrypt库文件名和路径需要与test.html文件在同一目录下。在JavaScript中使用return语句返回加密结果,VBA中可以通过parentWindow对象获取执行结果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(11条)

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月28日
  • 修改了问题 9月26日
  • 修改了问题 9月25日
  • 展开全部

悬赏问题

  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?