【问题标题】:Syntax for calling Excel COM (actxserver) methods in Matlab - Specifically the 'Find' method在 Matlab 中调用 Excel COM (actxserver) 方法的语法 - 特别是“查找”方法
【发布时间】:2012-12-05 20:09:41
【问题描述】:

我有搜索和搜索,但似乎无法弄清楚这一点。我认为这是一个适用于很多方法的非常普遍的问题,但我的问题是专门针对“查找”的。

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

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

这就是我所在的地方... Excel = actxserver('Excel.Application'); Sheet = Excel.Worksheets.Item(mysheet); 表。激活; cellObj = Sheet.Cells;

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

cellObj.Find('myData_1') 

当然

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

也有效..

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

于是我录制了一个宏,发现有一个名为“LookAt: = xlPart”的“Find”属性。我还发现,如果我将该属性设置为“xlWhole”,它将与 Microsoft 开发人员网站完全匹配。

现在,回到 Matlab 环境。根据 cellObj.methodsview,我应该可以使用 (handle,Variant,Variant(Optional)) 调用“查找”...

所以,我试过了……

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

我还尝试了大约 50 种其他语法组合。我只是无法弄清楚搜索我想要的单元格值并更改“LookAt”属性的正确语法是什么。

谁能帮帮我?请不要问我为什么要用 Excel 做任何事情,为了使这个线程富有成效,我的工作以这种方式完成是有充分理由的。

提前致谢, 贾斯汀

【问题讨论】:

    标签: excel matlab methods com


    【解决方案1】:

    我认为如果您使用cellobj.Find('myData_1',[],[],1),它应该可以满足您的需求。

    如果您查看Range.Finddocumentation page,您会发现LookAt 参数是第四个,所以我放置了空数组以将第二个和第三个参数保留为默认值。常数 1 对应于xlWhole,2 对应于xlPart。 (我猜到了,它起作用了——我从来不知道如何计算出 Excel 中枚举常量对应的数字,但它们通常是一组初始整数)。

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 2017-04-29
      • 2017-09-10
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多