如何在Excel编程中使用“查找”功能?

时间:2011-10-31 08:12:55

标签: c++ excel visual-c++ vba

我正在尝试从excel文件中读取一些值。为此我需要知道每列的最后一行。为此我使用find函数。但是,它给出了运行时错误。我正在使用c ++。这是代码

Excel::_ApplicationPtr app;
::CoInitialize(NULL);
app.CreateInstance("Excel.Application");
Excel::_WorkbookPtr wbk = app->Workbooks->Open("Algo_Sample.xlsx"));
Excel::_WorksheetPtr sheet = wbk->Sheets->Item[1];
Excel::RangePtr range_Ptr = sheet->GetRange("A:A");
range_Ptr->Find("Subject","A1",Excel::xlValues,Excel::xlWhole,Excel::xlByRows,Excel::xlNext,false,false);

我用调试器检查过,错误在最后一行。这是excel文件的快照       enter image description here

我将非常感谢能够阐明这个问题的人

注意:我使用的是Windows XP,Visual Studio 2008,Office 2007,c ++。

2 个答案:

答案 0 :(得分:1)

我不确定与C ++的链接,但在Excel中,如果要分配特定列的最后一行,我使用:

MyLastRowCount = Cells(Rows.Count, "A").End(xlUp).Row

此处变量MyLastRowCount被分配了A列中最后一个使用过的单元格的行号。

它的作用是,跳到A列的最后一个可用单元格(A17536表示xl03,或A1048576表示xl07 / 10),然后从下面跳到第一个占用单元格。

此致

罗伯特·伊尔布林克

答案 1 :(得分:0)

    ::Excel::RangePtr range = m_pObject->Cells->Find
    (
        pValue,
        vtMissing,
        ::Excel::XlFindLookIn::xlValues,
        ::Excel::XlLookAt::xlPart,
        ::Excel::XlSearchOrder::xlByRows,
        ::Excel::XlSearchDirection::xlNext,
        false,
        false,
        vtMissing
    );