首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

刻制Word宏,并将Word宏代码转换为Javascript代码的方法

2012-11-21 
录制Word宏,并将Word宏代码转换为Javascript代码的方法?1、概述 为了加速代码编写,我们可以首先通过录制Wor

录制Word宏,并将Word宏代码转换为Javascript代码的方法

?

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

1、概述


    为了加速代码编写,我们可以首先通过录制Word宏的方式来查看完成相应功能所需要的代码,然后转换为JavaScript代码。本文以插入表格为例,描述将宏转换为Javascript代码的过程及注意问题。[本文大部分内容同时适应于EXCEL]


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

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


      3、开始录制插入表格宏


        1)打开word。选择工具->宏->录制新宏:

        ?

        ?

          ?
            刻制Word宏,并将Word宏代码转换为Javascript代码的方法
              刻制Word宏,并将Word宏代码转换为Javascript代码的方法
                刻制Word宏,并将Word宏代码转换为Javascript代码的方法
                  刻制Word宏,并将Word宏代码转换为Javascript代码的方法
                    刻制Word宏,并将Word宏代码转换为Javascript代码的方法2)在随后出现的窗口中,“将宏保存在:”下拉框中,选择文档1(文档)3)从常用工具栏中,点击插入表格按钮,并选择一个3行3列的表格,如下图:4)在宏录制工具栏上,点击停止录制按钮,如下图所示:5)此时,文档中出现了一个3行3列的表格。如下图所示:

                    4、查看宏代码

                      ?
                        刻制Word宏,并将Word宏代码转换为Javascript代码的方法
                          刻制Word宏,并将Word宏代码转换为Javascript代码的方法
                            ?
                              ?
                                ?
                                  .Style = "网格型"If .Style <> "网格型" ThenEnd If
                                  .ApplyStyleHeadingRows = True
                                  .ApplyStyleLastRow = True
                                  .ApplyStyleFirstColumn = True
                                  .ApplyStyleLastColumn = TrueActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:= _
                                  3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
                                  wdAutoFitFixed
                                  With Selection.Tables(1)End WithSub Macro1()
                                  '
                                  ' Macro1 Macro
                                  ' 宏在 2007-02-02 由 用户19 录制
                                  'End Sub
                                    5、VBA代码分析 以下是vba代码的分析。先看第一条语句: ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:= _ 3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _ wd

                                    5、VBA代码分析

                                      ?
                                        ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:= _
                                          3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
                                          wdAutoFitFixed
                                          以下是vba代码的分析。先看第一条语句:
                                            ?
                                              ?
                                                ?
                                                  .Style = "网格型"If .Style <> "网格型" ThenEnd If
                                                  .ApplyStyleHeadingRows = True
                                                  .ApplyStyleLastRow = True
                                                  .ApplyStyleFirstColumn = True
                                                  .ApplyStyleLastColumn = TrueWith Selection.Tables(1)End With以上语句调用了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=" & wdWord9TableBehaviorSub showConst()End Sub
                                                                刻制Word宏,并将Word宏代码转换为Javascript代码的方法
                                                                  刻制Word宏,并将Word宏代码转换为Javascript代码的方法
                                                                  要得到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代码

                                                                        ?
                                                                          ?
                                                                            ?
                                                                              ?
                                                                                .Style = "网格型"If .Style <> "网格型" ThenEnd If
                                                                                .ApplyStyleHeadingRows = True
                                                                                .ApplyStyleLastRow = True
                                                                                .ApplyStyleFirstColumn = True
                                                                                .ApplyStyleLastColumn = TrueActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:= _
                                                                                3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
                                                                                wdAutoFitFixed
                                                                                With Selection.Tables(1)End With
                                                                                  刻制Word宏,并将Word宏代码转换为Javascript代码的方法

                                                                                  刻制Word宏,并将Word宏代码转换为Javascript代码的方法
                                                                                    ?
                                                                                      ?
                                                                                        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代码:
                                                                                        首先查阅Tables集合的Add方法描述,在Word编程参考中对Tables对象的Add方法的描述如下:而通过第6节,第1)步所描述的方法,可以得到wdWord9TableBehavior=1,wdAutoFitFixed=0
                                                                                        有了这些信息,就可以得到如下Js代码:

                                                                                        8、测试JavaScript代码

                                                                                          ?
                                                                                            ?
                                                                                              ?
                                                                                                ?
                                                                                                  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)
                                                                                                  {}将第7节最后得到的js代码封装为一个function,并在包含NTKO OFFICE文档控件的网页中加入一个按钮调用:
                                                                                                  function testAddTable()
                                                                                                  {}
                                                                                                  ........................................
                                                                                                  <button onclick="testAddTable()">测试添加表格</button>
                                                                                                  1)选择工具->宏->Visual Basic 编辑器。如下图所示。2)在出现的Visual Basic窗口中,从左边展开Project(文档1)中的模块,并双击NewMacros。如下图:3)右边窗口中的代码如下:

                                                                                                  ?

热点排行