Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Получение последней заполненной записи в таблице Excel

1.8K
24 октября 2007 года
rSolanov
106 / / 04.05.2005
Здраствуйте. Очень нужна Ваша помощь. Имеется файл Excel с таблицей, в которой заполненны данные. Как можно узнать последнюю заполненную запись в таблице?
263
24 октября 2007 года
koltaviy
816 / / 16.12.2004
Номер последней заполненой записи таблицы?
 
Код:
..
MsgBox (CStr(ActiveSheet.Range("A1").CurrentRegion.Rows.Count))

Где А1 - ячейка твоей таблицы.
1.8K
24 октября 2007 года
rSolanov
106 / / 04.05.2005
Да, в редакторе VBA это работает, а если посредством OLE вызывать
код из Delphi, возникает ошибка.
Код:
ShowMessage(Excel.WorkBooks[1].WorkSheets[1].Range('A1').CurrentRegion.Rows.Count);
Ошибка:
Член группы не найден.
Что может быть? Я в полной растерянности...
263
24 октября 2007 года
koltaviy
816 / / 16.12.2004
Во даешь :D
Ты хоть видел примеры работы с 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));
1.8K
24 октября 2007 года
rSolanov
106 / / 04.05.2005
Да я просто привёл краткий фрагмент кода. На самом деле:
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];
Ну и так далее...
Большое спасибо Вам за помощь. Вы мне очень помогли.
7.4K
26 сентября 2011 года
malor
69 / / 20.01.2007
В чем ошибка т была, rSolanov?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог