Имя: Пароль:
1C
 
Как в Excel открыть нужный лист
0 misha122062
 
09.02.09
15:00
Надо выгрузить данные в эксель. Но там много листов, мне нужно получить нужный. Ънаю как перебором, а как просто найти по имени?
Gbie
Екс= НОвый  COMОбъект("Excel.Application") ;
НашФайл = Екс.Workbooks.Open(путьКФайлу);
Лист = НашФайл.Sheets.Name("ВП");

не идет, да и сам чую наверно неверно, но как?
1 Heckfy
 
09.02.09
15:03
*******************************
Открытие книги (файла):
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
ПутьКФайлу - полный путь к файлу книги Excel.
Выбор листа книги для работы с ним:
Лист = Книга.WorkSheets(НомерЛиста);
или
Лист = Книга.WorkSheets(ИмяЛиста);
НомерЛиста - номер листа в книге, ИмяЛиста - имя листа в книге.
Получение значения ячейки листа:
Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;
НомерСтроки, НомерКолонки - номер строки и номер колонки, на пересечении которых находится ячейка.
Важно: не забывайте поле выполнения нужных действий добавлять код Эксель.Quit(); , иначе запущенный процесс останется незавершенным и будет занимать память и процессор компьютера.
*********************************************
2 Kolyasik
 
09.02.09
15:05
Лист = НашФайл.Sheets.Item("ВП");
3 Kolyasik
 
09.02.09
15:06
мульен вариантов ;)
4 misha122062
 
09.02.09
15:06
спасибо
5 misha122062
 
09.02.09
16:06
И еще, уж извените в тему.
Как записать измененый файл, наверно типа
НашФайл.Save();  правильно?

А вот как его показать пользователю? Наверно что то типа Visible...?
6 Heckfy
 
09.02.09
16:12
7 Тиль
 
09.02.09
16:12
а как можно выбрать только строчки? скажем все строчки по столбец ВВ?
8 Heckfy
 
09.02.09
16:17
(7)
Для Х=1 по Лист.UsedRange.Row.Count Цикл
Сообщить(""+Лист.Cells(Х, НомерКолонки).Value );
КонецЦикла;



На вскидку, как то так. :):):)
9 Тиль
 
09.02.09
16:21
Row.Count в листе 65000:)) все не выкинет?
10 Heckfy
 
09.02.09
16:27
(9) Что не выкинет? Куда не выкинет? Кто здесь?
11 dk
 
09.02.09
16:28
(9) читай справку по UsedRange
12 Тиль
 
09.02.09
16:28
Row.Count в листе Эксель 65000:))
не получится такого цикла от 1 до 65000?
13 Тиль
 
09.02.09
16:29
а..понял..по смыслу догадался
14 Тиль
 
09.02.09
17:39
на Лист.UsedRange.Row.Count ругается
15 Тиль
 
10.02.09
07:23
ап
16 skunk
 
10.02.09
07:27
попытка
       олеЕксель = новый COMОбъект("Excel.Application");
   исключение
       Предупреждение("Не удалось создать объект автоматизации для работы с MS Excel!");
       возврат;
   конецпопытки;
   попытка
       олеКнига = олеЕксель.Workbooks.Open(стрИсточник);
   исключение
       Предупреждение("Не удалось открыть для чтения выбранный файл!");
       возврат;
   конецпопытки;
   олеЛист = олеКнига.Worksheets.Item(1);
   чисСтрок = олеЛист.UsedRange.Rows.Count;
17 Тиль
 
10.02.09
07:45
(16) а как цикл запустить чтобы вывелись строчки с первой строки по столбец ВВ например? можно использовать запрос?
18 skunk
 
10.02.09
07:47
(17)сам то хоть понял чего спросил ... с первой строки по столбец... это как ты себе представляешь?
19 Mikeware
 
10.02.09
07:49
(18) А что? "Копать от забора и до обеда"....
20 Heckfy
 
10.02.09
07:49
(16) Ну конечно же Rows. :):) Досадная очепятка.
21 Тиль
 
10.02.09
07:49
с ячейки А1 по последюю ячейку столбца ВВ
22 Тиль
 
10.02.09
07:50
может запрос можно использовать? что нибудь (select * from олеЛист)? проканает?
23 Heckfy
 
10.02.09
07:52
(21)
Для Х=1 по Лист.UsedRange.Rows.Count Цикл
Для У=1 По Лист.UsedRange.Columns.Count Цикл
Сообщить(""+Лист.Cells(Х, У).Value );
КонецЦикла;
КонецЦикла;
24 Тиль
 
10.02.09
07:56
(23)нормально выводит...только значения в столбик...а как чтобы строка в строку выводилась?
25 Heckfy
 
10.02.09
08:02
(24) Эээ, ну посмотри в СП: ТабличныйДокумент; Присоединить.... ну, и т.д.
26 Тиль
 
10.02.09
08:11
блин...жалко запросом нельзя сделать.....
блин а вопрос в офф- можно конвертировать файл эксель в дбф4?
27 skunk
 
10.02.09
08:14
ADO ... и хоть за запрашивайся
28 Тиль
 
10.02.09
08:24
(27)пример есть?
29 Тиль
 
10.02.09
08:48
ап
30 skunk
 
10.02.09
10:34
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший