cro-logo      
Добро пожаловать, Гость. Пожалуйста, выберите Вход или Регистрация

 
 
  ГлавнаяСправкаПоискВходРегистрация  
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать
Запуск Excel через COM (Прочитано 468 раз)
Пытливый
Профи
****
Вне Форума



Сообщений: 280
Запуск Excel через COM
28.02.2019 :: 11:43:40
 
Эксель на компе установлен, но не хочет запускается. Видимо что-то делаю не так:
Код:
XLS = COM.GetObject("Excel.Application")
if not XLS then
   XLS = COM.CreateObject("Excel.Application")
end
 


Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 529
Санкт-Петербург
Re: Запуск Excel через COM
Ответ #1 - 28.02.2019 :: 11:47:44
 
А в запущенных процессах смотрели?
Если есть, то
Код:
XLS.Visible=true 

.
Если нет, то смотрите версию программы. Не во всех нормально работает COM.
Наверх
 
 
IP записан
 
Пытливый
Профи
****
Вне Форума



Сообщений: 280
Re: Запуск Excel через COM
Ответ #2 - 28.02.2019 :: 11:58:50
 
Да, все дело было в версии. Я делал в бетке 6.7.202 Сюрприз однако Улыбка
Наверх
 
 
IP записан
 
SDM
Бета-тестер
Вне Форума



Сообщений: 6
Re: Запуск Excel через COM
Ответ #3 - 05.04.2019 :: 16:43:12
 
Добрый день! Я столкнулся со следующей ситуацией - пытаюсь прочитать содержимое таблицы Excel (Excel 2016) - возникают следующие проблемы:

1) Строка (попытка подсчитать количество столбцов)

Код:
MsgBox(ExcelSheet.Cells(1,1).SpecialCells(11).Column) 



возвращает ошибку:

"Строка 56: COM exception:(..\src\library\tLuaCOM.cpp,382):Метод SpecialCells из класса Range завершен неверно"

2) При попытке прочитать значение содержимого из конкретной ячейки:

Код:
MsgBox(ExcelSheet.Cells(2,2).value) -- Значение ячейки 



возвращается пустое значение, хотя соответствующая ячейка на листе не пустая

Никак не могу разобраться - что я делаю неправильно?

Ниже - кусок кода:

Код:
function btn_load_excel_Click( control, event )
local excel = COM.CreateObject("Excel.Application")
if (excel) then excel.Visible = true end
ExcelBook = excel.WorkBooks:open ("C:\\Test\\test.xlsx")
ExcelSheet = ExcelBook.WorkSheets(1)
MsgBox(ExcelSheet.Cells(1,1).SpecialCells(11).Column) -- Число колонок на листе
MsgBox(ExcelSheet.Cells(2,2).value) -- Значение ячейки
MsgBox("excel:Quit()")
excel:Quit()
end
 

Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 529
Санкт-Петербург
Re: Запуск Excel через COM
Ответ #4 - 05.04.2019 :: 22:41:27
 
Насколько я понял, у Вас проблемы с поиском последней заполненной ячейки.
Вот здесь некоторые размышления по этому поводу. Посмотрите.
Я  использую комбинированный способ поиска по строкам и столбцам с выбором наибольших значений их индексов. 
Тем не менее и приведенный Вами код также будет работать, если его сделать в таком виде
Код:
ExcelSheet.Cells:SpecialCells(11).Column
ExcelSheet.Cells(2,2).Text 

Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 529
Санкт-Петербург
Re: Запуск Excel через COM
Ответ #5 - 08.04.2019 :: 18:24:07
 
Со значением, получаемым с помощью Код:
ExcelSheet.Cells:SpecialCells(11).Column 

будьте осторожны.
При наличии нескольких заполненных колонок и последней строкой, объединяющей все колонки, значение будет равно 1.
Кроме того, при наличии нескольких пустых строк после основных данных и объедения строки по колонкам, без наличия там каких-либо значений, данная строка воспринимается как последняя.
Наверх
 
 
IP записан
 
SDM
Бета-тестер
Вне Форума



Сообщений: 6
Re: Запуск Excel через COM
Ответ #6 - 15.04.2019 :: 14:00:55
 
Большое спасибо! Заработало!
Наверх
 
 
IP записан
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать