在Matlab中调用Excel COM(actxserver)方法的语法 - 特别是'Find'方法

时间:2012-12-18 15:19:24

标签: excel matlab methods com

我有搜索和搜索,似乎无法解决这个问题。我认为这是一个非常普遍的问题,适用于很多方法,但我的专门用于'查找'。

我是数据挖掘并在Matlab环境中写入Excel电子表格。我已经能够做了很多但是我一直在使用一种解决方法来解决一年多来我无法理解的事情,它确实减慢了速度。

我需要调用'Find'方法来查找特定的单元格值。

这是我在哪里......     Excel = actxserver('Excel.Application');     Sheet = Excel.Worksheets.Item(mysheet);     Sheet.Activate;     cellObj = Sheet.Cells;

现在......这就是我需要做的事情。我想找到一个包含'myData_1'值的单元格。所以我尝试使用......

cellObj.Find('myData_1') 

当然

invoke(cellObj,'Find','myData_1') 

也有效..

无论哪种方式,调用都会找到一个单元格,但该单元格实际上包含“myData_10”。由于Excel中的默认“查找”方法参数仅用于部分匹配。

所以我录制了一个宏,发现有一个名为'LookAt:= xlPart'的'Find'属性。另外我发现如果我将该属性设置为'xlWhole',那么它将是Microsoft Developer网站的完全匹配。

现在,回到Matlab环境。根据cellObj.methodsview,我应该可以用(handle,Variant,Variant(Optional))调用'Find'...

所以,我试过......

invoke(cellObj,'Find','myData_1','LookAt:=xlWhole').  

我也尝试了大约50种其他语法组合。我只是想知道搜索我想要的单元格值的正确语法是什么,并更改'LookAt'属性。

任何人都可以帮助我吗?并且,为了使这个线程富有成效,不要问我为什么要用Excel做任何事情,我的工作有这样一个很好的理由。

提前致谢, 贾斯汀

1 个答案:

答案 0 :(得分:0)

我认为如果你使用cellobj.Find('myData_1',[],[],1)它应该做你需要的。

如果您查看Range.Find的{​​{3}},您会看到LookAt参数是第四个,所以我将空数组放到第二个和第三个参数为默认值。常数1对应于xlWhole,2对应于xlPart。 (我猜测它并且它有效 - 我从来没有确定如何计算Excel中枚举的常量对应的数字,但通常它们是一组初始的整数)。

希望有所帮助!