BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Поиск данных на листе в EXCEL
 
Здравствуйте!
Необходимо из Excel взять данные .
Фрагмент кода ниже.
Компиляция проходит.При пошаговом прохождении программа ругается на
строку :
If Range("A1"):SpecialCells(xlLastCell):Value = ""
Пишет: "неизвестная функция".
С помощью данной конструкции можно корректно выделить весь диапазон данных
на листе.Через макросы это работает идеально.Придумал не сам, а взял из книги по EXEL.Очень удобная штука,ни когда не подводила.
Может быть кто подскажет как ее "прикрутить"

FUNCTION EXEL_DBF ()
#include "excel.ch"
#define xlLastCell 11
#define xlByRows 1
#define xlPrevious 2
#define xlByColumns 2
LOCAL oApp,oWorkBook,oWorkSheet,oRange,cFileName
LOCAL nLine:=3,iRow
cFileName:='C:\temp\main.xls'
dbPush()
TRY
oApp := CreateObject( "Excel.Application" ) //попытка создать объект Excel
CATCH
Alert("Excel не доступен!")
RETURN .F.
END
altd()
try
oWorkBook:=oApp:WorkBooks:open(OemToAnsi(cFileName),0)
catch
alert('Ошибка открытия входного файла. Не удалось открыть файл.')
RETURN .F.
end
try
oWorkSheet:=oWorkBook:worksheets(OemToAnsi('MAIN'))
catch
alert('Ошибка открытия входного файла. Не удалось открыть лист с данными')
RETURN .F.
end


//'поиск последней заполненной ячейки на листе
oWorkSheet:Select()
If Range("A1"):SpecialCells(xlLastCell):Value = ""
Cells(Cells:Find("*", ActiveCell:SpecialCells(xlLastCell), , , xlByRows, xlPrevious):Row, Cells:Find("*", ActiveCell:SpecialCells(xlLastCell), , , xlByColumns, xlPrevious):Column):Select()
Else
Range("A1"):SpecialCells(xlLastCell):Select()
EndIf
iRow = Selection:Row

oApp:visible:=.T.
dbpop()
return
 
По работе с Excel.
Я уже неоднократно замечал как с разнымси версиями приходится делать разные подходы, потому как в одной версии синтаксис работае, а в другой версии Excel - нет.

В результате тут наверно самое важное научиться пользоваться отладчиком.
Попробуйте через ALTD() остановиться в нужном Вам месте.

Потом в нижнем окне пробуем написать
?Range("A1"):SpecialCells(xlLastCell):Value
Смотрим какое возвращает значение или пишет что не знает такую функцию

Проверяю синтаксис, пробую его менять...
Если ничего не выходит

Тогда открываю Excel и средствами построения макроса - смотрю что он предлагает.
Пробую эти команды в отладчике.

Потом читаю документацию по VBA
И пробую новые команды.
И так до тех пор, пока в нужной точке задачи не получу оптимальный код.

Мне кажется что задача не понимает SpecialCells() - мы никогда таким не пользовались... Еще совет - лучше применять наверно EMPTY()
Тут надо с отладчиком поработать
Страницы: 1
Читают тему (гостей: 1)