Javascript利用VBA编辑Word文档

   在做人事系统过程中,发现网上关于Javascript与VBA交互的知识比较匮乏,为此我把自己对这方面的研究和大家分享下,希望能填补大家对这片知识的空白。

  先向大家介绍一些简单应用,比如JS创建Word文档、在Word中打印文字、添加表格,填充表格、合并表格

var wdapp = new ActiveXObject("Word.Application"); //引用word
wdapp.visible = true; //word模板是否可见
wddoc = wdapp.Documents.add(); //添加空白页
wdapp.ActiveDocument.PageSetup.Orientation = wdOrientLandscape; //文档横向排版
wdapp.Selection.TypeText("内容"); //打印文字
var myTable = wddoc.Tables.Add(wdapp.Selection.Range, 3, 3); 
myTable.Borders.Enable = true;//创建一个三行三列的表格
myTable.Cell(1, 1).Merge(myTable.Cell(1, 3));  //合并第一行
with (myTable.Cell(1, 1).Range)   //向表格第一行第一列填充数据
{           
        InsertAfter("内容");
}

   如果您的需求比较高,比如想设置表格的行高、表格内容居中,那么下面这套解决方案肯定适合您。

   首先,我们需要创建XML文件--ForwardedFileLetter.xml,并在XML中配置好在表格中需要显示的内容和内容的格式,如下代码:设置标题内容为“转递档案通知单”,字号为16,字体为宋体,对齐方式为居中。

<?xml version="1.0" encoding="utf-8" ?>
<ForwardedFileLetter>
  <Title1 fontsize="16" font-name="宋体" Alignment="1" >转递档案通知单</Title1>
  <Content1 fontsize="12" font-name="仿宋">
    <Table1 Height="30">
        <Row1>
     	   <Column1>档案编号: </Column1>
   	</Row1>
   	<Row2>
     	   <Column1>姓名</Column1>
     	   <Column2>现档案存放单位</Column2>
    	   <Column3>袋数 </Column3>
    	   <Column4>册数</Column4>
    	   <Column5>备 注</Column5>
   	</Row2>
    </Table1> 
  </Content1>
</ForwardedFileLetter>

         接着,我们在JS中创建对象,用于保存XML中获取的数据,好比C#中的实体。

var xmldoc = loadXML("ForwardedFileLetter.xml"); //读取xml文件

var Title1 = new Object(); //创建对象
var XMLTitle1 = xmldoc.getElementsByTagName("Title1"); //通过XML中的标记,获得Title1节点中包含的内容,并储存到XMLTitle1中
Title1.FontSize = XMLTitle1[0].getAttribute("fontsize"); //获得节点属性:字体大小
Title1.FontName = XMLTitle1[0].getAttribute("font-name"); //获得节点属性:字体样式
Title1.Alignment = XMLTitle1[0].getAttribute("Alignment");//获取节点属性:对齐方式
Title1.Content = XMLTitle1 [0].childNodes[0].text;        //获得节点内容

var Conten1 = new Object(); //创建对象
var XMLContent = xmldoc.getElementsByTagName("Content1"); //获得Content1节点
Content1.FontName = XMLContent [0].getAttribute("font-name"); //获得节点属性:字体样式
Content1.FontSize = XMLContent [0].getAttribute("fontsize"); //获得节点属性;字体大小

var Table1 = new Object(); //创建对象
var XMLtable = xmldoc.getElementsByTagName("Table1"); //获得节点
Table1.Height = XMLtable [0].getAttribute("Height"); //获得表格行高属性

      最后介绍如何使用保存在对象中的属性
//设置Word文档中,第一段(标题)内容格式
wdapp.ActiveDocument.Paragraphs(1).Range.Font.Name = Title1.FontName; //通过对象Title1加载XML文件Title1标签下设置的FontName(字体)属性
wdapp.ActiveDocument.Paragraphs(1).Range.Font.Size = Title1.FontSize; //通过对象Title1加载XML文件Title1标签下设置的FontSize(字号)属性
wdapp.ActiveDocument.Paragraphs(1).Alignment = Title1.Alignment;      //通过对象Title1加载XML文件Title1标签下设置的Alignment(对齐方式)属性
//设置表格表格内容格式
wdapp.ActiveDocument.Tables(1).Range.Font.Name = Content1.FontName;
wdapp.ActiveDocument.Tables(1).Range.Font.Size = Content1.FontSize;
wdapp.ActiveDocument.Tables(1).Rows.Height = Table1.Height;
    
//设置表格中的字体居中显示
wdapp.ActiveDocument.Tables(1).Range.ParagraphFormat.Alignment = Title1.Alignment;
wdapp.ActiveDocument.Tables(1).Range.Cells.VerticalAlignment = Title1.Alignment;
    下面是自己通过上述方法实现的Demo截图   

   

   希望我的讲解能让大家对JS和VBA有更深的认识。  


Javascript利用VBA编辑Word文档,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。