Javascript/Excel ActiveX 对象。查找完全匹配

Posted

技术标签:

【中文标题】Javascript/Excel ActiveX 对象。查找完全匹配【英文标题】:Javascript/Excel ActiveX object. Find exact match 【发布时间】:2014-05-07 05:03:54 【问题描述】:

因此,我正在使用我构建的 SharePoint Web 部件(html 表单 Web 部件)来查询托管在我们的 Sharepoint 网站上的 excel 文件。我编写了javascript来创建一个Excel ActiveX对象,我可以很好地搜索工作表。

但是,我需要让它搜索完全匹配(整个单元格)而不仅仅是部分。我知道我需要的代码,但我无法让它工作。我需要了解如何为“Find()”函数的“xlWhole”参数创建正确的对象类型。

我遇到问题的代码行被注释掉了,因为那行不通。有什么见解吗?我见过 Range.Find 方法,但我就是不能让它工作。

var excel = new ActiveXObject("Excel.Application");

var wb = excel.Workbooks.Open("workbook path");
var ws = wb.Worksheets("worksheet name");
var ws = wb.ActiveSheet;
//var cell = ws.Cells.Find(str,excel.XlLookAt.xlWhole);
var cell = ws.Cells.Find(str);
foundRow = cell.Row;

【问题讨论】:

您需要做的就是传递常量 xlWhole(即 1)的值 - 您可以在 Excel vBA 对象浏览器中找到它。 试试ws.Cells.Find(str,,,1) ws.Cells.Find(str,,,1) 给我一个语法错误,而 ws.Cells.Find(str,0,0,1) 给我一个类型不匹配。这应该在 JavaScript 中工作,对吗? 【参考方案1】:

这对我有用:

function searchExcel()

    var excel =new ActiveXObject("Excel.Application");
    excel.visible=true;

    var wb = excel.workbooks.open("D:\\Analysis\\tmp\\Book1.xlsx");
    var ws = wb.sheets(1);

    var str="Value1";

    // .Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, 
    //                                 MatchCase, MatchByte, SearchFormat)
    var cell = ws.Cells.Find(str,ws.Cells(1),-4163,1)

    alert(cell?cell.Row:(str+" not found"));

    excel.quit();

我猜你在 js 中使用 COM 时不能跳过参数(但你可以把它们放在最后)。

【讨论】:

宾果游戏。做到了。您在哪里找到有关 Find() 函数常量的信息? 在 Excel 中转到 VB 编辑器并点击 F2 以打开对象浏览器窗口:您可以输入常量名称以查看它们的值。或者在立即/调试窗口中输入(例如)? xlWhole。参数列表来自msdn.microsoft.com/en-us/library/office/…

以上是关于Javascript/Excel ActiveX 对象。查找完全匹配的主要内容,如果未能解决你的问题,请参考以下文章

将 ActiveX 包装到拦截调用(ActiveX 代理包装器)

ActiveX

ActiveX开发

如何将 MFC ActiveX 控件添加到现有的 activex 项目

当activex与flash player在同一个页面时不能调用activex方法

什么是 ActiveX控件