|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Чтение данных из ячейки Excel вызовом Offset
Добрый день
хотелось бы получить консультацию по следующему вопросу: (пытаюсь запрограммировать свой же макрос для XLS на дельфи, но испытываю трудности) при помощи ниже приведенного фрагмента кода считываю данные из XLS файла. НО в ексель макросе, я мог читать данные по смещению от активной ячейки а в дельфи что то не получается вызвать метод Offset В екселе, в цикле я находил что в определенной ячейке есть константные данные «Тип Телефона», вызвав c.Offset( 1, 0).Value я получал тип телефона (может быть указано ”МОБ” или ”СОТ”) Код:
Public Const ConstTelephoneType = “Тип Телефона” Dim c As Range Dim ContactTelephone As String For Each c In Range("A1:F1024") If c.Value = ConstTelephoneType Then ContactTelephone = c.Offset( 1, 0).Value --------------------------- НО как использовать метод Offset( X,Y).Value в дельфи? ЕСЛИ КТО НАУЧИТ БУДУ ОЧЕНЬ БЛАГОДАРЕН Код:
AXLSFile:= 'Имя Файла XLS'; // Create Excel-OLE Object XLApp := CreateOleObject('Excel.Application'); XLApp.Visible := TRUE; // потом поставить FALSE XLApp.Workbooks.Open(AXLSFile); Sheet := XLApp.Workbooks[1].WorkSheets[1]; Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; // Get the value of the last row x := XLApp.ActiveCell.Row; // Get the value of the last column y := XLApp.ActiveCell.Column; //XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1]; XLApp.Workbooks[1].WorkSheets[1].Select; RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value; k := 1; repeat for r := 1 to y do Begin sGetStrData := RangeMatrix[K, R]; If (sGetStrData = TelephoneConst) Then Form1.RichEdit1.Lines.Add(sGetStrData); End; Inc(k, 1); until k > x; // Unassign the Delphi Variant Matrix RangeMatrix := Unassigned; |
#2
|
||||
|
||||
Цитата:
Код:
ContactTelephone := RangeMatrix[K, R].Offset[1, 0].Value; |
#3
|
|||
|
|||
Да к сожалению так не работает (по крайней мере у меня)
sGetStrData := RangeMatrix[K, R].Offset[1, 0].Value;
Да к сожалению так не работает (по крайней мере у меня) выдается ошибка "EOLEError with message 'Variant does not reference as automation object'" |