为了加速代码编写,我们可以首先通过录制Word宏的方式来查看完成相应功能所需要的代码,然后转换为JavaScript代码。本文以插入表格为例,描述将宏转换为Javascript代码的过程及注意问题。[本文大部分内容同时适应于EXCEL]
2、为什么不直接在文档中使用宏
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
-
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>
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代码:
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
宏
编辑器 编
写
第一个函数