Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка пустого значения?  (Прочитано 13799 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« : 04-10-2009 18:49 » 

Здравствуйте. Помогите с кодом
выдает какую то ошибку.
Код:
Excel = СоздатьОбъект("Excel.Application");
к="";
ф="";
ФС.ВыбратьФайл(0,ф,к);
файл=к+ф;
Книга=Excel.WorkBooks.Open(файл); 
Лист = Книга.Worksheets(1);
Значение1=1;
КС=8; КК=3;
Пока СтрДлина(Значение1)<>0 Цикл
КС=КС+6;
н=Лист.Cells(КС,4).Value;
Если СтрДлина(СокрЛП(Строка(н)))<>0 Тогда
Значение1=Лист.Cells(КС,4).Value;
Сообщить(Значение1);

КК=КК+6;
Значение2=Лист.Cells(КК,8).Value;
Сообщить(Значение2);
//КонецЦикла;

КонецЕсли;
КонецЦикла;
Excel.Quit();
а вот сама ошибка
Код:
н=Лист.Cells(КС,4).Value;
{C:\КОНФЫ\7КА\EXTFORMS\ЗАГРУЗКА_ИЗ_ЕКСЕЛЯ.ERT(23)}: :
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 05-10-2009 11:28 » 

Возможно превышен лимит строк? (64536)
Просто условие выхода из цикла очень неявное...
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 05-10-2009 20:02 » 

Kivals, возможно, но просто я не знаю как задать чтобы обработка подсчитала количество непустых строк.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 06-10-2009 09:07 » 

Код:
	Excel=Новый ComОбъект("Excel.Application");
WB = Excel.Workbooks.Open(ИмяФайла, Истина); // Только для чтения
WB.Worksheets(1); // Первый лист книги. Можно и по имени листа

КонЯчейка=WS.Cells.SpecialCells(xlCellTypeLastCell);
КонКол=КонЯчейка.Column; // Метод не работает на защищенном листе!
КонСтр=КонЯчейка.Row; // Метод не работает на защищенном листе!

КвоСтр=0; // количество непустых строк
Для И1=1 По КонСтр Цикл
Для И2=1 По КонКол Цикл
Зн=WS.Cells(И1, И2).Value;
Если ПустаяСтрока(Зн)=0 Тогда // Если не пустое значение в любой ячейке...
КвоСтр=КвоСтр+1; // ...увеличиваем счетчик строк...
Прервать; // ... и переходим на следующую строку
КонецЕсли;
КонецЦикла;
КонецЦикла;
WB.Close();
Excel.Quit();

Сообщить(КвоСтр);
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 06-10-2009 15:33 » 

Kivals, спасибо щас попробую.
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 06-10-2009 15:44 » 

Kivals, спасибо, сейчас попробую.

Код:
КонЯчейка=WB.Cells.SpecialCells(xlCellTypeLastCell<<?>>);
{C:\Конфы\7ка\ExtForms\загрузка_из_екселя.ert(58)}: Переменная не определена (xlCellTypeLastCell)
Я, кажется, правильно исправил WS на WB?
« Последнее редактирование: 06-10-2009 16:52 от Sel » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 07-10-2009 06:00 » 

Нет - просто я кое-что забыл дописать:
Код:
...
WS=WB.Worksheets(1); // Первый лист книги. Можно и по имени листа
xlCellTypeLastCell=11;
КонЯчейка=WS.Cells.SpecialCells(xlCellTypeLastCell);
...
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 07-10-2009 07:31 » 

Kivals, а почему присваивается именно значение 11 а не какое то другое?

после выполнения он показал мне что непустых строк у меня 27 хотя на самом деле их 28.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 07-10-2009 08:12 » 

Потому что xlCellTypeLastCell это константа Excel. Смотриться это значение отладчиком в редакторе Visual Basic в макросах Excel.

Уверен? Можешь прикрепить сюда Excel файл (если у нем нет секретных данных)?
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 07-10-2009 09:33 » 

Kivals, у меня оказывается таблица прерывается и в пятой строке(после шапки) идет пустая строка. А можно ли как-то считать чтобы она показывала мне максимальных номер строки?
т.е. показывал № последней не пустой строки?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 07-10-2009 09:55 » new

Можно. А самому подумать?

Замени
КвоСтр=КвоСтр+1;
на
КвоСтр=И1;
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 07-10-2009 12:11 » 

Kivals, спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines