..
MsgBox (CStr(ActiveSheet.Range("A1").CurrentRegion.Rows.Count))
Получение последней заполненной записи в таблице Excel
Здраствуйте. Очень нужна Ваша помощь. Имеется файл Excel с таблицей, в которой заполненны данные. Как можно узнать последнюю заполненную запись в таблице?
Код:
Где А1 - ячейка твоей таблицы.
код из Delphi, возникает ошибка.
Код:
ShowMessage(Excel.WorkBooks[1].WorkSheets[1].Range('A1').CurrentRegion.Rows.Count);
Ошибка:
Член группы не найден.
Что может быть? Я в полной растерянности...
Ты хоть видел примеры работы с OLE??
Даю работающий код на BCB.
Думаю, если заменишь все "->" на ".", то все у тебя заработает. ;)
А вообще почитай сначала чо-нибудь!!
Код:
Variant exApp, exSh, exRange, exRow;
AnsiString fPath = ExtractFilePath( Application->ExeName ) + "Resources\\Office\\Calculation.xlt";
try
{
exApp = Variant::GetActiveObject( "Excel.Application" );
}
catch ( Exception &e )
{
try
{
exApp = Variant::CreateObject( "Excel.Application" );
}
catch ( Exception &e )
{
Application->MessageBox( "Can't open MS Excel!", "Error", MB_OK + MB_ICONERROR );
return;
}
}
try
{
exApp.OlePropertyGet( "WorkBooks" ).OleProcedure( "Open", fPath.c_str(), 0 , true, 1 );
exSh = exApp.OlePropertyGet( "WorkSheets", 1 );
}
catch ( Exception &e )
{
Application->MessageBox( "Can't find the MS Excel book", "Error", MB_OK + MB_ICONERROR );
return;
}
exRange = exSh.OlePropertyGet( "Range", "A1" );
exRow = exSh.OlePropertyGet( "Rows", ( int )exRange.OlePropertyGet( "Row" ) );
int n = exRow.OlePropertyGet( "Count" );
ShowMessage(IntToStr(n));
AnsiString fPath = ExtractFilePath( Application->ExeName ) + "Resources\\Office\\Calculation.xlt";
try
{
exApp = Variant::GetActiveObject( "Excel.Application" );
}
catch ( Exception &e )
{
try
{
exApp = Variant::CreateObject( "Excel.Application" );
}
catch ( Exception &e )
{
Application->MessageBox( "Can't open MS Excel!", "Error", MB_OK + MB_ICONERROR );
return;
}
}
try
{
exApp.OlePropertyGet( "WorkBooks" ).OleProcedure( "Open", fPath.c_str(), 0 , true, 1 );
exSh = exApp.OlePropertyGet( "WorkSheets", 1 );
}
catch ( Exception &e )
{
Application->MessageBox( "Can't find the MS Excel book", "Error", MB_OK + MB_ICONERROR );
return;
}
exRange = exSh.OlePropertyGet( "Range", "A1" );
exRow = exSh.OlePropertyGet( "Rows", ( int )exRange.OlePropertyGet( "Row" ) );
int n = exRow.OlePropertyGet( "Count" );
ShowMessage(IntToStr(n));
var
Excel: Variant;
WS: Variant;
begin
Excel := CreateOleObject('Excel.Application');
Excel.Visible := False;
Excel.WorkBooks.Open(E_FileName.Text);
WS := Excel.WorkBooks[1].WorkSheets[1];
Ну и так далее...
Большое спасибо Вам за помощь. Вы мне очень помогли.
В чем ошибка т была, rSolanov?