Microsoft Office VBA ActiveX编程的JScript实现

本文要点:

  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 same
p.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 InlineShapes
iShape.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 这样的字眼会大大增加本文的浏览量!哈哈:)

时间: 2024-10-15 16:37:33

Microsoft Office VBA ActiveX编程的JScript实现的相关文章

安装Mathematics Add-In时错误“需要适用于 Microsoft Office 的 .NET 可编程

使用Word或Onenote的人都知道,Mathematics Add-In可以在 Word 文档和 OneNote 笔记本中轻松地绘制二维和三维图表,对等式和不等式求解以及化简代数表达式.极大的方便数学教学和学生上数学课记笔记的问题.下载 前几天有一个活动,演示要用到数学公式,于是就下载安装它,但在安装时显示此错误: "需要适用于 Microsoft Office 的 .NET 可编程性支持才能安装 Microsoft Mathematics Add-in.". 于是就下载:dotN

VS编程中找不到Microsoft.Office.Core、Microsoft.Office.Interop.Word和VBIDE

在使用vs2005. vs2008. vs2010 制作包含 word等office的应用程序时,有时找不到对Microsoft.Office.Core. Microsoft.Office.Interop.Word和VBIDE 三个文件的引用,此时,如果已经安装了office 2003,那么可能是选择“典型安装”或者是“最小化安装”,那需要从“控制面板”中将其删除,然后再次安装,并选择“完全安装”,安装之后再使用以下两 种方法之一即可. 在选择“完全安装”office 2003 后,使用以下两种

Microsoft.Office.Interop.Excel 放到B/S客户端失败问题 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。

检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问. (异常来自 HRESULT:0x80070005 (E_ACCESSDENIED)). 解决办法:(转) http://blog.csdn.net/wzhibin/article/details/1816690 用.net写了一个相关Excel的B/S的程序,部署到2003企业版的服务器上遇到这个错误:检索 COM

基于C#语言利用Microsoft.office.introp.excel操作Excel总结

终于解决了质量评估测试软件在任意装有excel(2010以下版本)的电脑上正常使用的问题!!!!!!!!!! 可到http://www.microsoft.com/en-sa/download/confirmation.aspx?id=3508下载 Microsoft Office 2010: Primary Interop Assemblies Redistributable 解决我的质量评估测试软件在所有电脑上都可以正常打开excel文件!! 有的电脑打不开,原因: 因为软件调用了Micro

Visual Studio2013使用Microsoft Office Document Imaging(MODI)的方法

若要安装和 Microsoft Office 2013 一同使用的 Microsoft Office Document Imaging (MODI),请选择以下方法之一: 方法 1:通过安装 SharePoint Designer 2007 安装 MODI SharePoint Designer 2007 可从 Microsoft 下载中心免费下载.若要下载 SharePoint Designer 2007,并只安装其中的 MODI,请执行以下步骤: 从此位置下载并运行 SharePointDe

找不到引用microsoft.office.core解决办法 via mrcjiong

在控制面板中,选择"添加删除程序",找到office ,选择"更改",在对话框中选择"添加删除功能",然后选择自定义安装,添加上office工具 中的.net可编程性支持,安全起见,把excel下的,word下的此选项都添加上,然后点击"更新"按钮,更新office,完成后再回到.net开发平台. 如果以上办法无法解决的话,在打开项目引用,删除有叉标记的引用,右击选择添加引用,选择COM里面选择Microft Office 1

官方文档:Office VBA 参考

https://docs.microsoft.com/zh-CN/office/vba/api/overview/    Office VBA 参考 https://docs.microsoft.com/zh-CN/office/vba/api/Excel.Range.RemoveDuplicates    Range.RemoveDuplicates 方法 (Excel) 原文地址:https://www.cnblogs.com/onelikeone/p/10202294.html

激活Microsoft Office professional plus 2010

1. 下载工具 http://pan.baidu.com/s/1dDDFhEL 2. 启动工具 双击Office 2010 Toolkit.exe 在Activation选项栏中选择AutoKMS Custom Task 在Main选项栏中选择Microsoft Office 2010,如下图 点击EZ-Activetor按钮 完成后如下, 如果在激活过程中失败,可重复以上动作,多试几次.

无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。

无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”.此操作失败的原因是对 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错. (异常来自 HRESULT:0x80029C4A