精华内容
下载资源
问答
  • 我正在尝试让我的VBA例程与使用JavaScript的页面进行交互,并且过去已经成功.最近更新后,它不再有效.此时我需要A)以编程方式单击按钮或B)执行按钮调用的功能.棘手的部分是该按钮没有声明的名称.在源代码中声明的工作...

    我正在尝试让我的VBA例程与使用JavaScript的页面进行交互,并且过去已经成功.最近更新后,它不再有效.此时我需要A)以编程方式单击按钮或B)执行按钮调用的功能.棘手的部分是该按钮没有声明的名称.在源代码中声明的工作表上还有其他名称,我可以很好地与它们进行交互.这是页面源代码中的html代码:

    如您所见,它没有声明按钮的名称.在过去,以下工作:

    Set ie = CreateObject("InternetExplorer.application")

    ie.document.all(79).Click

    “79”是项目编号的索引.现在看来该按钮已更改为项目“81”,但只是放入:

    ie.document.all(81).Click

    由于某种原因不起作用.我知道我想要执行的函数:exportData(workOrderSearchForm),但不知道如何在使用“click”方法之外执行此操作.

    我已经找了一些关于IE应用程序对象的体面文档,但似乎无法找到一个好的来源.有没有办法执行该功能?

    解决方法:

    试试这个:

    Dim CurrentWindow As HTMLWindowProxy: Set CurrentWindow = ie.Document.parentWindow

    Call CurrentWindow.execScript("exportData(workOrderSearchForm)")

    但首先,您需要在引用(工具>参考)下包含Microsoft HTML对象库

    标签:javascript,excel,excel-vba,vba

    来源: https://codeday.me/bug/20190715/1472389.html

    展开全文
  • VBA调用javascript(一)

    2021-01-17 03:20:18
    函数接口Function execJSFunc(filePath, funcName)Dim codeOpen filePath For Input As #1Do While Not EOF(1)Line Input #1, tmpCodecode = code & tmpCode & Chr(13)LoopClose #1Set JS = CreateObject(...

    函数接口

    Function execJSFunc(filePath, funcName)

    Dim code

    Open filePath For Input As #1

    Do While Not EOF(1)

    Line Input #1, tmpCode

    code = code & tmpCode & Chr(13)

    Loop

    Close #1

    Set JS = CreateObject("ScriptControl")

    JS.Language = "JScript"

    JS.AddCode code

    Dim result

    result = JS.run(funcName, ThisWorkbook)

    execJSFunc = result

    End Function

    调用封装

    Sub run(funcName)

    Dim path, fileName, pos, result

    path = ThisWorkbook.path

    pos = InStr(4, ThisWorkbook.Name, ".", 1)

    pos = Len(ThisWorkbook.Name) - 4

    fileName = Mid(ThisWorkbook.Name, 1, pos - 1)

    path = path + "" + fileName + ".js"

    result = execJSFunc(path, funcName)

    Debug.Print result

    End Sub

    调用示例

    Sub 按钮1_Click()

    run("hello")

    End Sub

    test.js源码

    function hello(workbook) {

    var sheets = workbook.sheets;

    sheets("Sheet1").range("a3").value = 55555;

    return workbook.sheets.count;

    }

    展开全文
  • 我在VBA脚本中运行JavaScript函数时遇到问题.我的JavaScript:function ConfirmSave(){var Ok = confirm('Are you sure all Documents and Information are attached and correct before saving?');if(Ok)retu...

    我需要通过IE确认’确定’/’取消’弹出消息.我在VBA脚本中运行JavaScript函数时遇到问题.我的JavaScript:

    function ConfirmSave()

    {

    var Ok = confirm('Are you sure all Documents and Information are attached and correct before saving?');

    if(Ok)

    return true;

    else

    return false;

    }

    function submitbutton_click() {

    document.getElementById('FileAttachement2_hdnButtonFlag').value = "SAVE";

    var submitbutton = document.getElementById('cmdDownSave');

    var uploadobj=document.getElementById('FileAttachement2_Uploader1');

    if(!window.filesuploaded)

    {

    if (!ConfirmSave()) return false;

    if(uploadobj.getqueuecount()>0)

    {

    uploadobj.startupload();

    }

    else

    {

    //var uploadedcount=parseInt(submitbutton.getAttribute("itemcount"))||0;

    //if(uploadedcount>0)

    //{

    return true;

    //}

    //alert("Please browse files for upload");

    }

    return false;

    }

    window.filesuploaded=false;

    return true;

    }

    在手动过程中,当我单击“保存”按钮时,页面将弹出一个确认消息框,当弹出窗口出现时,我的宏将停止运行,除非单击该按钮.

    这是我试过的代码,点击保存按钮,

    Set ElementNameV = HTMLDoc.getElementsByName("cmdsave")

    ElementNameV(0).click

    我也尝试使用removeattribute和setattribute,弹出消息消失但它没有上传文件,因为我需要按下确认消息框中的’确定’,单击保存按钮开始文件上传时出现.

    ElementNameV(0).removeAttribute ("onclick")

    ElementNameV(0).setAttribute "onclick", "return true"

    ElementNameV(0).click

    我尝试使用下面的脚本运行JavaScript函数,但它也显示确认弹出消息框:

    Call HTMLDoc.parentWindow.execScript("submitbutton_click()")

    解决方法:

    你应该能够用一个只返回true的函数覆盖ConfirmSave函数:

    HTMLDoc.parentWindow.execScript "window.ConfirmSave = function(){return true;};"

    要么

    HTMLDoc.parentWindow.execScript "window.confirm = function(){return true;};"

    甚至

    HTMLDoc.parentWindow.eval "window.confirm = function(){return true;};"

    在单击按钮之前运行它.

    经过测试并在IE11中运行

    标签:javascript,vba,excel-vba,popup,automation

    来源: https://codeday.me/bug/20190927/1824616.html

    展开全文
  • 基础篇Excel的缺省脚本语言是VBA,所以系统的一切接口理论上都是可以通过VBA脚本访问的,而使用其他脚本语言可能只能访问部分功能,这点是需要开发者明确的。但是Javascript脚本的好处是,其语法简单,结构清晰,...

    基础篇

    Excel的缺省脚本语言是VBA,所以系统的一切接口理论上都是可以通过VBA脚本访问的,而使用其他脚本语言可能只能访问部分功能,这点是需要开发者明确的。但是Javascript脚本的好处是,其语法简单,结构清晰,用户友好:例如支持Function-Frist,不必管理内存,支持Object类型,for循环语法简单等。

    使用JavaScript基本方法

    1. 在引用中包含"Microsoft Script Control"控件

    添加支持MS Script Control控件

    2. 新建ScriptControl,即创建一个JS运行环境

    3. 在JS运行环境中添加JavaScript脚本(字符串)

    4. 调用JS运行环境中的函数

    使用JavaScript的基本方法

    实际项目中的问题

    在VBA脚本中以字符串形式定义JavaScript脚本/程序带来很大的麻烦:

    字符串较长的时候,需要换行,VBA本身换行需要在每行加连接符。JavaScript程序的换行,只能通过转义符号表示。JavaScript代码的管理、维护、检查、甚至调试都无法单独进行。因此在实际项目中,一般要求把JavaScript脚本与VBA脚本分开管理。那么涉及到如何将在VBA中读取的JavaScript脚本问题,一旦得到脚本对应的字符串,就可以将其添加到JS运行环境中。大约有三种方法:(一)JavaScript与Excel文件一起发行。VBA脚本运行时读取本地的JavaScript文件;(二)JavaScript文件放置于服务器中,VBA下载JavaScript文件,并读取。(三)JavaScript文件以某种方式包含于Excel文件中。显然方法(一),(二)更适合开发阶段;而方法(三)适合于实际发布版本。以下介绍几种方法的实现问题。

    问题一:读取文件

    支持UTF-8编码文件

    一般在VBA中读取文件可以用Open-Input接口或者FileSystemObjectScripting对象的 TextStream接口,但都不支持读取UTF-8编码的文件。而JavaScript脚本文件一般存储为UTF-8编码格式。因此需要特别使用支持该编码的文件读取方式,如例子中使用ADODB.Steam对象支持读取UTF-8编码的文件。

    问题二:下载远程文件在VBA中下载远程文件,有两类方式,一种是使用VBA中可以用的某些控件进行下载,另一种是使用操作系统的底层接口下载。一般第二种方法的速度更快,稳定性更好。

    使用XMLHTTP控件下载文件

    使用操作系统的文件下载接口

    问题三:JavaScript打包在Excel中

    问题三.方法一

    土人的方法是直接把JavaScript文件拷贝在某个隐藏的Sheet的某个Cell中,VBA读取则个Cell中的字符串,就相当于或许的JavaScript脚本。

    读取隐藏表中的内容

    问题三.方法二

    把脚本文件以对象方式嵌入(Embed)到Excel文件,再VBA运行时读取嵌入对象。下例中笔者以test.txt后缀名添加的嵌入对象。读取嵌入文件对象的方式也有两种(1)直接用Notepad打开文件,然后读取Notepad中的内容。(2)将嵌入文件存储为本地文件,然后用前面介绍的"读取文件”的方法读取。

    打开嵌入的文件再拷贝

    保存嵌入的文件再读取

    问题三.方法三方法三是推荐方法。使用Excel中的CustomXMLPart接口,添加、删除、读取定制的XML片段。即将JavaScript文本封装在一个定制的XML片段中。这种方法的好处是:1.简单稳定,2.对用户完全隐藏,3. 不访问文件系统不访问网络。

    添加CustomXMLPart的示例

    上例中,在添加之前还有读取CustomXMLParts中是否已经添加了该类型的XMLPart的判断。因为在笔者的应用这确保只添加JavaScript脚本一次。其余CustomXMLPart读取、修改、删除等接口的使用,请查看相关文档。

    多个JS文件

    类似HTML中可以载入多个Javascript文件。一个JS运行环境中也可以载入多次脚本(字符串)。当然也可以把所有文件的字符串都串接起来再载入JS运行环境。

    适用性

    据查Office 2016之后,微软才正式提供JavaScript API。笔者在MS-Office2010中使用该方法,能够在JavaScript中获取Cell的几乎所有属性值。但是那些这部分并没有完整的文档。另外数组的创建似乎不能直接使用var x = [],而需要var x =new Array();

    JavaScript代码收集Range信息

    展开全文
  • I'm trying to get my VBA routine to interact with a page that uses JavaScript, and have been successful in the past. After a recent update, it no longer works. At this point I need to either A) prog.....
  • 因为要在公司OA系统做报销,每个月的重复工作量非常大,于是想用vba实现自动报销功能。利用getElementByid语句已经实现了自动登录功能,但遇到一个瓶颈就是不能利用此语句点击网页中的一个链接,若是平时手动点击该...
  • SeleniumBasic中的IWebDriver对象的ExecuteScript方法用于执行JavaScript脚本。语法如下Function ExecuteScript(script As String, [arg1], [arg2])后面两个是可选参数。例如下面的程序,自动输入关键字中秋节,自动...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼跪求各位大神,最近因为VBA调用IE的问题弄得焦头烂额,深夜3点还是睡不着,小弟VBA小白一枚,在大量百度各种求救无奈之下发此贴,肯请各位老师帮忙看看下面代码的问题,...
  • VBA中使用JAVASCRIPT和VBSCRIPT(1)javascript有许多函数和功能可以弥补VBA不足,如正则,数组,类,等等1)以数组为例,用JAVASCRIPT排序Subfig8()Setx=CreateObject("msscriptcontrol.scriptcontrol")x.Language=...
  • I need to by pass an IE confirm 'OK'/'Cancel' pop-up message.I have a problem running a javascript function in my vba script.see below for the javascript codesfunction ConfirmSave(){var Ok = confirm('...
  • 我有一个Excel VBA宏,它通过Internet Explorer与Intranet站点交互,遍历客户列表,打开客户配置文件,更新字段并保存更改....当我单击保存按钮时,javascript执行函数调用以提交更改.发送密钥不起作用,因为在...
  • 网页爬虫实践——VBA调用JS事件

    千次阅读 2018-04-15 15:53:05
    网页爬虫实践——VBA调用JS事件作者:AntoniotheFuture关键词:VBA网页爬虫,网抓,JavaScript,Access开发平台:Access平台版本上限:2010平台版本下限:尚未出现开发语言:VBA简介:公司要求我们在双12那天之前...
  • I am trying to do some web scraping in Excel VBA. Here is the part of the code that I am having trouble with:IE.Navigate URLDoDoEventsLoop While IE.ReadyState <> 4 Or IE.Busy = TrueSet doc = IE....
  • 分析网页要完成这项功能,首先需要对项目的网页进行分析,找到关键数据项的ID。如下图中的。1、用户名的ID名称;2、密码对应的ID名称;3、登录按钮对应的ID名称。完成自动登录我们在Delphi中使用WebBrowser控件来...
  • win.parent.execScript("showUrlUpload()", "javascript") Dim doc = webdocin.Document doc.All("fileurl").SetAttribute("Value", "zz") 搞定! 转载于:...
  • 本帖最后由 liu-aguang 于 2016-10-29 07:56 编辑二....解决的办法是: 显示股价的网页中固定不变的内容设计为单独网页;股价数据也单独为一个网页。这样每次股价变化服务器只需要传输变化的股价...
  • JavaScript的优势和劣势

    万次阅读 2018-09-03 16:10:18
    如所有的计算机语言一样...在用户电脑上作为脚本执行,依靠任务,结果几乎是立即完成的。例如,在发送到服务器之前,你可以校验任何客户的输入内容。 这样可以减少服务器上载的内容。 简洁性: JavaScript很容易学...
  • VB和VBS、VBA的区别及作用

    千次阅读 2020-10-24 17:39:25
    VBScript是Visual Basic Script的简称,有时也被缩写为VBS。...目前这种语言广泛应用于网页和ASP程序制作,同时还可以直接作为一个可执行程序。用于调试简单的VB语句非常方便。 由于VBScript可以通过Win...
  • This is basically how to use the fetch API in JavaScript to make a request, and also how to access the response returned. 基本上,这是如何使用JavaScript中的访存API发出请求,以及如何访问返回的响应。 ...
  • 如何自动点击网页按钮http://club.请问如何点击这个网页上的“领取”按钮(三个如何区分)?谢谢。ttp://www.红包 --Excel Home论坛 - var STYLEID = '2', STATICURL = 'static/', IMGDIR = 'comiis_19lou', VERHASH =...
  • 今天,谈谈网页的动静两门技术,也作为入门JavaScript的简介吧。 一、动态网页技术分为:浏览器端动态技术 和 服务器端动态技术。  (1)浏览器端的动态技术  DHTML技术可以说是一种多项技术的综合,包括文档对象...
  • Excel JavaScript API初尝试

    千次阅读 2020-04-02 22:09:12
    当然,VBA和宏录制功能已经非常成熟了,只是最近在学习JavaScript和一些前端的开发,所以浏览微软的文档发现了这个Office JS API。但是国内几乎搜索不到它的用法,再加上微软的那机器翻译的中文文档简直惨不忍睹,...
  • 一.本地office中通过创建宏实现此需求 1.打开一个Excel文件,在需要插入批注...2.进入VBA编辑界面,将以下代码拷贝-保存-关闭VBA界面 Sub addComment()  ActiveSheet.Application.Sheets("Sheet1").Ra...
  • 记得之前一直给大家推荐咱们EH论坛编著的VBA图书《Excel VBA经典代码应用大全》,这书出来有段时间了,但一直未见出有力的优惠活动。这次京东破天荒出了个5折,而且是没有任何附加条件的5折,有需要的朋友不妨剁手。...
  • 点击上方蓝字关注我翻译 | 《JavaScript Everywhere》第18章 带Electron的桌面应用程序(^_^)写在最前面 大家好呀,我是毛小悠,是一位前端开发工程师。正在翻译一本英文技术书籍。为了提高大家的阅读体验,对语句的...
  • VBA开发者的转型之路

    2017-08-14 14:43:58
    相信看这篇文章 的用户应该都知道什么是VBA,在这里还是简单介绍一下,Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。...
  • 1、概述 为了加速代码编写,我们可以首先通过录制Word宏的方式来查看完成相应功能所需要的代码,然后转换为JavaScript代码。本文以插入表格为例,描述将宏转换为Javascript代码的过程及注意问题。[本文大部分内容...
  • 用Navigate方法来显示某URL的网页,但是如果要在网页完全加载完毕之前一直等待还需要其他的处理,接下来我们详细的说明。 目录 利用Navigate方法用IE访问某URL的流程 关于VBA函数、方法、属性 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 620
精华内容 248
热门标签
关键字:

vba执行网页javascript

java 订阅