Microsoft Office VBA ActiveX编程的JScript实现

来源:互联网 发布:淘宝新手怎样增加粉丝 编辑:程序博客网 时间:2024/04/28 11:13

本文要点:

发布后发现盗贴现象好严重,打个标记:By @Jimbowhy @源地址:http://blog.csdn.net/WinsenJiansbomber/article/details/41253341

  1. 在JScript中使用VBArray
  2. 在JScript中调用需要传入VB数组的方法
  3. 在JScript中调用VBA的命名参数化的方法
  4. 示例Word.Application的文件写入、图片插入、文件保存等等
  5. 示例Excel.Application的单元格、多行、区域的复制等等

/************************* Common Functions **********************************//* Tips: an alert emulator for Wscript host */function alert(msg){    WScript.Echo(msg+"");}/* Tips: auto close popup in 3 seconds */function popup(msg,delay){    delay = delay || 3    var sh = new ActiveXObject("Wscript.Shell");    var tip = "Tips in %D seconds".replace("%D",delay);    sh.popup(msg+"", delay, tip, 64);  }/* Tips: use safe VB Array for VBArray in JScript 8.0, this method can be use in multiple VB Array * http://stackoverflow.com/questions/848246/how-can-i-use-javascript-within-an-excel-macro * Return Keys as a SafeArray, then can be use: new VBArray(safeArray); */function toVBArray(jsArray) {    var dict = new ActiveXObject("Scripting.Dictionary");    for (var i in jsArray) dict.Add(i, jsArray[i]);    return dict.Keys();}/************************* Office Word Application ***************************/var WdSaveOptions = { wdDoNotSaveChanges:0, wdPromptToSaveChanges:-2, wdSaveChanges:-1 }var WdBuiltinStyle = {    wdStyleNormal:-1,   // 正文。     wdStyleHeading1:-2, // 标题 1~10。     wdStyleHeading2:-3,    wdStyleHeading3:-4,    wdStyleHeading4:-5,    wdStyleHeading5:-6,    wdStyleHeading6:-7,    wdStyleHeading7:-8,    wdStyleHeading8:-9,    wdStyleHeading9:-10,    wdStyleNormalIndent:-29, // 正文缩进。     wdStyleBodyText:-67, // 正文文本。    wdStyleHyperlink:-86, // 超链接。     wdStylePlainText:-91, // 纯文本。     wdStyleQuote:-181  // 引用。     // ... and more};var WdSaveFormat = {    wdFormatDocument:0, // Microsoft Office Word 格式。     wdFormatDOSText:4, // Microsoft DOS 文本格式。     wdFormatDOSTextLineBreaks:5, // Microsoft DOS 文本格式,并且保留换行符。     wdFormatEncodedText:7, // 编码文本格式。     wdFormatFilteredHTML:10, // 筛选的 HTML 格式。     wdFormatHTML:8, // 标准 HTML 格式。     wdFormatRTF:6, // RTF 格式。     wdFormatTemplate:1, // Word 模板格式。     wdFormatDocument97:0, // Microsoft Word 97 文档格式。     wdFormatDocumentDefault:16 // Word 默认文档文件格式。对于 Microsoft Office Word 2007,这是 DOCX 格式。     //...};/* 1. Create Winword application and let it visible */var Word = new ActiveXObject("Word.Application");Word.Visible = true;Word.DisplayAlerts = false;/* 2. Prepare a new document to writing, NOTE: the method Add does follow parentheses */var Doc = Word.Documents.Add();/* 3. Writes a contents and set style */var p = Doc.Paragraphs.Add();p.Range.Text = "Comming";p.Style = Doc.Styles(WdBuiltinStyle.wdStyleHeading1);var p = Doc.Paragraphs.Add(); // create a new paragraph but the Range is the samep.Range.Text += "Hot baby to this document";p.Style = Doc.Styles(WdBuiltinStyle.wdStyleNormal);var p = Doc.Paragraphs.Add(); p.Range.Text += "Hot baby to this document";//p.Range.InsertFile("./some.txt.xls.doc");popup("Insert Picture",6);Doc.SaveAs("./T.DOC",WdSaveFormat.wdFormatDocument97);var path = "./md1.png";var p = Doc.Paragraphs.Add(); // add empty on avoid replace when Paste().var p = Doc.Paragraphs.Add();p.Range.Text = "PLACEHOLDER";var iShape = Doc.InlineShapes.AddPicture(path); // Shapes or InlineShapesiShape.Range.Cut();//iShape.Range.Select();//Word.Selection.Cut();p.Range.Paste();popup("Winword be ready to exit",6);/* 4. Delete or Save you document */Doc.Save();//Doc.Close(WdSaveOptions.wdDoNotSaveChanges);//Doc.SaveAs("./T.DOC");/* 5. Writes a paragraph */Word.Quit();/*************************** Office Excel Application ************************//* 1. create Excel application, and setting options * Excel.Application can be found in reg HKCR\Excel.Application or EXCEL.EXE */var Excel = new ActiveXObject("Excel.Application");//var Sheet = new ActiveXObject("Excel.Sheet");Excel.Visible = true;Excel.DisplayAlerts = false;/* 2. Prepare Workbook to working, NOTE: the method Add not follow parentheses */var WorkBook = Excel.Workbooks.Add/* Tips: Reorder sheets use named parameters method in VBA */WorkBook.Sheets("Sheet1").Move(null, WorkBook.Sheets("Sheet3")); // Move after sheet2/* Tips: Delete wasted sheets */var a = toVBArray(["Sheet1","Sheet2","Sheet3"]); //WorkBook.Sheets(a).Delete();/* 3. Optionally you can create a new Sheet */var Sheet = Excel.Sheets.Add;Sheet.Name = "New Sheet";Sheet.Cells(1,1).Value = "This is column A, row 1";//WorkBook.Sheets("Sheet1").Move( "after",WorkBook.Sheets("Sheet2") );/* 4. Optionally save or delete your work *///WorkBook.Close(false);WorkBook.SaveAs("./T.XLS");popup("T.XLS save to:\r\n"+Sheet.Application.ActiveWorkbook.Path);/* 5. Keep away close application */Excel.Quit();

最后,作者绝对有理由相信,在文章的末尾添加 mywife.cc 这样的字眼会大大增加本文的浏览量!哈哈:)


0 0
原创粉丝点击