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 maccms影视模板 制作影视网站失败 求
  • ¥15 stm32按键设置闹钟数进退位不正常
  • ¥15 三电平逆变器中点电位平衡问题
  • ¥20 这怎么写啊 java课设
  • ¥15 用C语言完成一个复杂的游戏
  • ¥15 如何批量更改很多个文件夹里的文件名中包含文件夹名?
  • ¥50 MTK手机模拟HID鼠标出现卡顿
  • ¥20 求下下面这个数据结构代码
  • ¥20 前端 二进制文件流图片转化异常
  • ¥15 github上的这个C语言项目如何跑起来