• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Evaluate Excel В Lotus

  • Автор темы Автор темы Anatoly
  • Дата начала Дата начала
A

Anatoly

В макросах EXCEL
Result =Sheets(2).Evaluate("SUM(F10:F14)")
отрабатывает нормально и возвращает сумму блока

В скрипте Lotus
Result =xlApp.WorkSheets(2).Evaluate("SUM(F10:F14)")
ошибку типа данных.

Вообще, кто-нибудь делал логический контроль данных в EXCEL?
 
а у Result тип variant? Другие команды с WorkSheets отрабатывают? xlApp это что, как получаешь?
 
а у Result тип variant? Другие команды с WorkSheets отрабатывают?

У результ тип Integer. Как только объявляю Variant, сразу требует поставить перед приcвоением SET.
xlApp.WorkSheets(2).Evaluate("SUM(F10:F14)") возвращает OBJECT
А должен, по идее, число. И что с этим делать непонятно...
 
Anatoly
Попробуйте посмотреть в отладчике, какие поля есть у этого объекта
 
Скорей всего неправильно обращаешься. Для примера самое простое
Result = xlApp.WorkSheets(2).cells(1,1).Value при Result as variant что записывает в Result?
 
Anatoly
Попробуйте посмотреть в отладчике, какие поля есть у этого объекта
Смотрел: тип OBJECT и все.
Кстати через xlApp.WorkSheets(2).Evaluate("F9").Value удается получить значение отдельной ячеек.
С блоками почему не получается.
 
Через Evaluate не пробовал, не могу сказать, но как вариант попробуй обращаться к блокам так:
xl.Range("F10:F14" ).Select
xl.Selection.ВычислениеСуммы

при Set xl= CreateObject("Excel.Application")

или xl.Range("F10:F14" ).ВычислениеСуммы

примерно так. Точнее могу сказать позже)
 
Скорей всего неправильно обращаешься. Для примера самое простое
Result = xlApp.WorkSheets(2).cells(1,1).Value при Result as variant что записывает в Result?

C Cells().value проблемм никогда не было.

Dim Result As Variant
Result = xlApp.WorkSheets(2).Evaluate("F9").Value
в Result -> значение ячейки F9

Но надо еще возвращать и суммы блоков ячеек
Result = xlApp.WorkSheets(2).Evaluate("SUM(F10:F14)").Value
"Object variable not set"
 
Не совсем понятно... нужен аналог функции VBA?
 
вот к тому что выше написал это посмотри
 
Не совсем понятно... нужен аналог функции VBA?
Нужно организовать логический контроль данных в файлах перед тем как импортировать их в задачу.
Эта ячейка не больше той, это равна сумме тех и т.д.
То есть нужно как-то получать в скрипте суммы блоков и перечней ячеек
 
наверное проще написать свою функцию подсчета сумм.
Ну или какой-нибудь документ-правило в котором описать какая ячейка должна быть больше или меньше, суммы блоков и т.д.
Если это статичные блоки конечно
 
наверное проще написать свою функцию подсчета сумм.
Ну или какой-нибудь документ-правило в котором описать какая ячейка должна быть больше или меньше, суммы блоков и т.д.
Если это статичные блоки конечно
Так есть.
Сделал документы по отчетам, к ним респонсы с описанием правил.
Например поля одного из простых условий:
LSide ="F9"
RSide ="SUM(F10:F14)"
Condition ="="
И вот с получением результатов и их сравнения - затык...
 
а чем не подходит вариант через WorksheetFunction?
вот пример:
Код:
Set excelApp = GetObject ("", "Excel.Application")
Set excelDoc = excelApp.Workbooks.Add
Set myRange = excelDoc.Sheets(1).Range("A1:F10")
answer = excelApp.Application.WorksheetFunction.Sum(myRange)
 
а чем не подходит вариант через WorksheetFunction?
вот пример:
Код:
Set excelApp = GetObject ("", "Excel.Application")
Set excelDoc = excelApp.Workbooks.Add
Set myRange = excelDoc.Sheets(1).Range("A1:F10")
answer = excelApp.Application.WorksheetFunction.Sum(myRange)
Спасибо, не знал о таком.
Набор функций WorksheetFunction достаточно обширен.
Но придется что-то наворачивать в документе описания условия проверки: в полях остаются только диапазоны и уходят функции их обработки. Придется расширять доки по описанию условий.
 
Но придется что-то наворачивать в документе описания условия проверки: в полях остаются только диапазоны и уходят функции их обработки. Придется расширять доки по описанию условий.
Не айс, конечно, но можно объявить answer, excelApp, глобальными и использовать Execute, например:
Код:
Execute({answer = excelApp.Application.WorksheetFunction.Sum(excelDoc.Sheets(1).Range("A1:F10"))})
If answer = 0 Then '...
Строку для Execute формировать из значений полей тестовых документов.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab