91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38

Ошибка при работе с Excel

21.05.2016, 18:52. Показов 3769. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Определяю количество занятых ячеек (ячеек с информацией) в столбце файл-Excel, точнее номер последнего занятого столбца. При выполнении следующей команды:
C++
1
2
3
4
5
   //Активация последней известной ячейки
   v_Var_Sheet.OlePropertyGet("Cells").OlePropertyGet("SpecialCells", 11).OleProcedure("Activate");
 
   //Узнать номер последнего известного столбца
   int i_ColLast = v_Var_Excel.OlePropertyGet("ActiveCell").OlePropertyGet("Column");
возникает ошибка при выполнении первой строки, если лист в Excel защищен. На незащищенном листе все нормально. Что делаю не так? может есть другой метод?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2016, 18:52
Ответы с готовыми решениями:

Ошибка при работе с Excel
ошибка Добавлено через 27 секунд private void button3_Click_1(object sender, RoutedEventArgs e) { excelapp...

Ошибка при работе с Excel
Программа взаимодействует с экселем. Если я правильно понял, у меня не подключена какая-то библиотека, потому что данный проект работал,...

Ошибка при работе с excel
Нужно прочитать значение из ячейки. Например 1,1 (A1). Возникает ошибка -------------- Исключение из HRESULT: 0x800A03EC ...

26
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
21.05.2016, 20:20
Цитата Сообщение от akrufar Посмотреть сообщение
Что делаю не так?
то что вы делаете дает ли эксель сделать руками? дает ли он это сделать в макросе на вба? если нет - очевидно это нельзя сделать.
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 20:23  [ТС]
Да, дает. Проверял. Код:
ActiveCell.SpecialCells(xlLastCell).Sele ct

Пробовал вместо Activate писать Select. Тоже не помогло
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
21.05.2016, 20:32
akrufar, руками дает а в вба нет? может вы в вба пишите не то что делаете руками? через запись макроса пробовали?
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 20:37  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
akrufar, руками дает а в вба нет? может вы в вба пишите не то что делаете руками? через запись макроса пробовали?
Да, через макросы дает. И руками тоже дает (ctrl+end). Все получается. А через Си не дает

Код VBA как раз из макроса скопировал (ActiveCell.SpecialCells(xlLastCell).Sel ect)
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
21.05.2016, 20:45
Цитата Сообщение от akrufar Посмотреть сообщение
Код VBA как раз из макроса скопировал
ничуть ваш код на этот код не похож. по идее там
C++
1
v_Var_Excel.OlePropertyGet("ActiveCell").OleFunction("SpecialCells", xlLastCell /*надо глядеть какое это число*/).OleProcedure/*а может функция надо глядеть*/("Select")
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 20:50  [ТС]
xlLastCell = 11. OleProcedure("Select") пробовал, разницы нет.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
21.05.2016, 20:52
Цитата Сообщение от akrufar Посмотреть сообщение
разницы нет
а как с первым куском? у вас там не активцелл а просто целлс
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 20:58  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
а как с первым куском? у вас там не активцелл а просто целлс
Тогда билдер ругается и говорит EOleSysError with message "Неизвестное имя" и указывает на эту строку
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
21.05.2016, 21:06
akrufar, очевидно вы не у того объекта её запрашиваете - вот во второй строке он же не ругается?
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 21:11  [ТС]
Разобрался, надо немного исправить код на такой:
C++
1
2
v_Var_Excel.OlePropertyGet("ActiveCell").OlePropertyGet("SpecialCells", 11).
      OleProcedure("Select");
Тогда все запускается, но с защищенным листом все также, не работает:
EOleSysError with message "Ошибка"

Добавлено через 2 минуты
А еще вот на этой строке стопорится и стрелку показывает при выводе этой ошибки:
C++
1
return OlePropertyGet(name, static_cast<TAutoArgsBase*>(&args));
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
21.05.2016, 21:33
akrufar, если работает в вба то работает и тут иного сложно представить спешиалцелл это точно свойство-массив или функция?
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 21:38  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
akrufar, если работает в вба то работает и тут иного сложно представить
Самое интересное, что оно работает на простых листах, но не на защищенных.

Цитата Сообщение от vxg Посмотреть сообщение
спешиалцелл это точно свойство-массив или функция?
Вот этот вопрос я не понял. В VBA я не силен. Начинающий. Вычитал, что ActiveCell возвращает диапазон ячеек. А судя по тому как макрос работает SpecialCells с 11 кодом выдает только одну ячейку.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
21.05.2016, 21:52
akrufar, нажмите в вба ф2 полазайте по его объектам. Если вызовы одинаковые то действие кода вба должно быть таким же как на C++ - там чудес нет и скрытых тайн
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
22.05.2016, 15:48  [ТС]
А можете данный код запустить у себя на машине? Используя файл с защищенным листом. может опять проблема на стороне моей среды разработки?
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
22.05.2016, 21:18
akrufar, у меня макрос вба при попытке исполнить ваш код на защищённом листе говорит что этого на таких листах делать нельзя
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
23.05.2016, 08:09  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
akrufar, у меня макрос вба при попытке исполнить ваш код на защищённом листе говорит что этого на таких листах делать нельзя
Странно. У меня свободно исполняет.
А есть тогда другой метод вычислить последнюю занятую строку и столбец в Excel на защищенном листе?
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
23.05.2016, 09:48
Цитата Сообщение от akrufar Посмотреть сообщение
А есть тогда другой метод вычислить последнюю занятую строку и столбец в Excel на защищенном листе?
к своему огорчению за вас нашел этот метод в первой же строке поиска в гугл
Visual Basic
1
Cells(Rows.Count, 1).End(xlUp).Row
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
23.05.2016, 10:01  [ТС]
Недостаток в том, что надо явно указывать номер столбца, придется перебирать каждый отдельно. Так что не подходит. попробую другие методы
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
23.05.2016, 10:21
Цитата Сообщение от akrufar Посмотреть сообщение
Недостаток в том, что надо явно указывать номер столбца
логика подсказывает что вы должны его знать или у вас документ неустановленной формы который распознает нейросеть)? тогда перебирайте все ячейки на листе) по ссылке прямо сказано что тот способ который вы применяли ранее не работает на защищенных листах
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.05.2016, 10:21
Помогаю со студенческими работами здесь

Странная ошибка при работе с Excel
Пытаюсь создать Excel файл и записать в него ячейки но при компиляции программы получаю совершенно не понятную мне ошибку int i; ...

Ошибка при работе с формулами MS Excel
Здравствуйте, столкнулся на днях с проблемой ввода формул в ячейки эл. таблицы. Суть в том, что при попытке использовать в формуле значение...

Ошибка при работе с макросами Excel
Здравствуйте! При работе в Excel с толкнулся с такой ошибкой: Compile error in hidden module: Лист1 помогите пожалуйста разобраться...

Странная ошибка при работе с Excel
В общем, имеется такая процедура конвертации XLS в CSV (даже не спрашивайте, зачем мне это нужно): procedure...

Ошибка в приложении при работе с excel
Здравствуйте написал приложение! В приложении считывает данные с Excel таблицы. У меня на пк все нормально, никаких ошибок. А вот на пк...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru