相关文章推荐
绅士的凉面  ·  Getting Started | PDF ...·  1 年前    · 
会开车的烈马  ·  What's New in TiDB ...·  1 年前    · 
直爽的哑铃  ·  干货 | ...·  2 年前    · 
焦虑的灯泡  ·  core audio - ...·  2 年前    · 
为了加速代码编写,我们可以首先通过录制Word宏的方式来查看完成相应功能所需要的代码,然后转换为JavaScript代码。本文以插入表格为例,描述将宏转换为Javascript代码的过程及注意问题。[本文大部分内容同时适应于EXCEL]


2、为什么不直接在文档中使用宏

  • 1)在Word 2003中,由于安全性问题,默认情况下宏是被禁用的,不能被执行。
    2)有宏的文档在打开的时候会有安全性提示,导致用户感觉不友好。


    3、开始录制插入表格宏

    1)打开word。选择工具->宏->录制新宏: 2)在随后出现的窗口中,“将宏保存在:”下拉框中,选择文档1(文档) 3)从常用工具栏中,点击插入表格按钮,并选择一个3行3列的表格,如下图: 4)在宏录制工具栏上,点击停止录制按钮,如下图所示: 5)此时,文档中出现了一个3行3列的表格。如下图所示:

    4、查看宏代码

    1)选择工具->宏->Visual Basic 编辑器。如下图所示。

    2)在出现的Visual Basic窗口中,从左边展开Project(文档1)中的模块,并双击NewMacros。如下图:

    3)右边窗口中的代码如下:

    • .Style = "网格型"
  • If .Style <> "网格型" Then End If .ApplyStyleHeadingRows = True .ApplyStyleLastRow = True .ApplyStyleFirstColumn = True .ApplyStyleLastColumn = True
  • ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:= _ 3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _ wdAutoFitFixed With Selection.Tables(1) End With
  • Sub Macro1() ' Macro1 Macro ' 宏在 2007-02-02 由 用户19 录制 End Sub

    5、VBA代码分析

    • ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:= _ 3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _ wdAutoFitFixed
      • .Style = "网格型"
    • If .Style <> "网格型" Then End If .ApplyStyleHeadingRows = True .ApplyStyleLastRow = True .ApplyStyleFirstColumn = True .ApplyStyleLastColumn = True
  • With Selection.Tables(1) End With 以下是vba代码的分析。先看第一条语句: 以上语句调用了ActiveDocument的Tables集合对象的Add方法。添加一个Table对象到文档中。 以上语句设定当前插入点所在Table(也就是刚刚加入的Table对象 )的Tyle属性,以及ApplyStyleHeadingRows等属性。


    6、VBA代码转换为JavaScript代码应该注意的问题

    • ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:= _ 3, DefaultTableBehavior:= wdWord9TableBehavior , AutoFitBehavior:= _ wdAutoFitFixed
      • MsgBox "wdWord9TableBehavior=" & wdWord9TableBehavior
    • Sub showConst() End Sub 要得到VBA常量的数字值,可以在Visual Basic编辑器中,随便输入一个Sub过程,加入MessageBox 常量即可。比如,要显示 wdWord9TableBehavior 的常量值,代码如下图所示: 将光标定位到Msgbox语句所在行,点击工具栏上的运行按钮。如下图所示: 即可得到结果:
      • var mydoc = ntkoobj.ActiveDocument; //得到Document对象 var app = mydoc.Application; //得到Application对象 var sel = app.Selection; //得到Selection对象
  • 将VBA代码转换为JavaScript代码过程中,有几个问题需要注意:

    1)VBA中的常量应该使用数字代替。比如上面以下VBA语句中的 wdWord9TableBehavior 以及 wdAutoFitFixed


    2)在VBA代码中,可以直接访问Application对象,ActiveDocument对象,以及Selection对象。但是在使用JavaScript对NTKO OFFICE文档控件中的Word对象编程时,首先是通过控件对象.ActiveDocument得到word的Document对象,然后通过Document对象的Application属性访问Application对象。然后再通过Application对象得到Selection对象。比如: 3)VBA函数或者过程调用支持命名参数。但是JavaScript调用不支持命名参数。因此,应该在Word编程帮助中找到相应方法的描述,按照从左到右的顺序写入参数。常量采用数字代替。中间不能有遗漏的参数。但是最后面的可选参数是可以省略的。
    4)注意VBA中的Bool类型的常量True和False,应该替换为Js中的true和false.
    5)注意其它Js和VBA的语法差别。比如,if语句等。以及每行js语句之后需要分号。
  • 7、转换为JavaScript代码

    照上述原则,以下VBA语句:

    8、测试JavaScript代码

  • var mydoc = ntkoobj.ActiveDocument; //得到Document对象 var app = mydoc.Application; //得到Application对象 var sel = app.Selection; //得到Selection对象 var tables = mydoc.Tables; var newTable = tables.Add(sel.Range,3,3,1,0); with(newTable)
  • 将第7节最后得到的js代码封装为一个function,并在包含NTKO OFFICE文档控件的网页中加入一个按钮调用:
    function testAddTable()
    { }
    ........................................
    <button οnclick="testAddTable()">测试添加表格</button>
    • .Style = "网格型"
  • If .Style <> "网格型" Then End If
    .ApplyStyleHeadingRows = True
    .ApplyStyleLastRow = True
    .ApplyStyleFirstColumn = True
    .ApplyStyleLastColumn = True
  • ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:= _
    3, DefaultTableBehavior:= wdWord9TableBehavior , AutoFitBehavior:= _
    wdAutoFitFixed
    With Selection.Tables(1)
    End With

    可以遵循以下步骤被转换为如下JavaScript代码:
    首先查阅Tables集合的Add方法描述,在Word编程参考中对Tables对象的Add方法的描述如下:

    而通过第6节,第1)步所描述的方法,可以得到 wdWord9TableBehavior=1, wdAutoFitFixed=0
    有了这些信息,就可以得到如下Js代码:

    • style = "网格型";
  • if(style != "网格型")
    {
    }
    ApplyStyleHeadingRows = true;
    ApplyStyleLastRow = true;
    ApplyStyleFirstColumn = true;
    ApplyStyleLastColumn = true;
  • var mydoc = ntkoobj.ActiveDocument; //得到Document对象
    var app = mydoc.Application; //得到Application对象
    var sel = app.Selection; //得到Selection对象
    var tables = mydoc.Tables;
    var newTable = tables.Add(sel.Range,3,3,1,0);
    with(newTable)
    {
    VBA JavaScript 转换 器 该翻译器旨在用作教育工具,以帮助 VBA 开发人员熟悉 JavaScript 。 此工具的 代码 基于可从论坛和在线的多个来源中找到的正则表达式示例。 抱歉地说...我没有保存所有利用的记录。 只是知道,比我更聪明的人是这里找到的大多数 代码 的基础。 我只是简单地调整了我需要的东西,然后将它们全部打包到一个实用程序中。 与大多数翻译工具一样,此工具不会执行100%完整的翻译。 它旨在涵盖 VBA 中的常见构造(足以帮助您入门)。 这个想法是输入 VBA 代码 的基本块(确保包括您的Function / Sub包装器),并查看语法在 JavaScript 中的外观。 最好是先尝试简单的操作,然后进入更高级的IF语句,循环,比较运算符,Select Case开关等。 目前,该翻译器可与以下工具一起使用: 函数和子过程 IF THEN基本语句 SELECT CASE语 wps js 入门看这里,我 了常用的 js 操作Excel的方法:获取工作簿对象、获取工作表对象、获取单元格的值、链接转图片、生成条形码图片、单元格区域数据转二维数组方法、保存工作簿、弹出输入框、YesNo选择框,助你从 VBA 转战 JS 。 在之前我们学习到了 VBA 这种方式来操作办公软件三剑客( Word , Excel, PPT),但是在新时代的召唤下,WPS中已经可以使用 JS 来进行操作了,这里我们就再来学习一下WPS中的 JS A 其实之前学习过 VBA 的同学比较有优势,其实 JS A与 VBA 很多操作都很相似 1.打开 编辑器 可以Alt + F11 打开 也可点击如下按键 在 VBA 中使用 JAVASCRIPT 和VBSCRIPT(1) javascript 有许多函数和功能可以弥补 VBA 不足,如正则,数组,类,等等1)以数组为例,用 JAVASCRIPT 排序Subfig8()Setx=CreateObject("msscriptcontrol.scriptcontrol")x.Language=" javascript "arr=Array("aa","cc",... 我有一个Excel VBA ,它通过Internet Explorer与Intranet站点交互,遍历客户列表,打开客户配置文件,更新字段并保存更改.我遇到的问题是,当我将更改保存到客户配置文件时,Web应用程序中有一个弹出窗口,要求我确认其配置文件的更改,我无法弄清楚如何以编程方式单击“确定“在弹出窗口中.当我单击保存按钮时, javascript 会执行函数调用以提交更改.发送密钥不起作用,因为在... Selection.SetRange(0, 0); let table1 = ActiveDocument.Tables.Add(Selection.Range, 2, 7, 1, 0); //table1.Range.Cells.Item(1).Range.InsertAfter("hello"); // 遍历单元格总数 for(let i=1;i<=1000;i++){ Selection.EndKey('wdRow','wdMove'); let a='d'+Selection.Text+'d'; let b = a.replace(/\s*/g,""); let c= Selection.Text; if(b =='dd'){ //此行已换行 console.log(c); eval5: 基于 TypeScript 编 JavaScript 解释器,支持完整 ES5 语法 小程序eval/Function终极替代方案:eval5 | 微信开放社区--这里有小程序版本和案例 --本人基于eval5, 了个复制就是结果的工具。 需求:Excel处理数据有缺陷,特别是公示不够多,字符串切分比较麻烦。比如一个 123abc甲乙 http://www.cnblogs.com/Charltsing/p/ JS DotNetAPI.html 在网页采集中,很多时候需要运行网站下载的某个 js 文件中的函数,以计算Request参数。 VBA 直接运行 JS 函数有很多办法,常见的是通过msscriptcontrol.scriptcontrol或者htmlfile。 在这里,我提供另外一种比较灵活可控的方式来运行 js 函数。 C#... For i = 1 To ActiveDocument.Paragraphs.Count mypic = ActiveDocument.Paragraphs(i).Range.Text // LineSpacing间距,单位磅,当LineSpacingRule为5时,值为行数 word .Selection.ParagraphFormat.LineSpacing = 5;... 1.wps开放平台https://open.wps.cn/docs/office 2.微软 word 接口https://docs.microsoft.com/zh-cn/office/ vba /api/ word .wdcolor 1.打开wps,找到开发工具,切换到 js 环境,图中已经切换到 js 了所以显示的是切回vb 2.打开wps 编辑器 编 第一个函数
  •