![]() |
![]() |
![]() |
|
Excel.WorkBooks.Open(МойТабДок) | ☑ | ||
---|---|---|---|---|
0
zippygrill
04.05.14
✎
19:05
|
Привет всем!
Отладчик сразу попадает в Исключение при вызове команды из название темы. В чем может быть проблема? Есть несколько таб.документов, вот и пытаюсь их сохранить в отдельных листах. Код целиком ниже. Файл = Новый COMОбъект("Excel.Application"); Файл.Visible = 0; Файл.DisplayAlerts = 0; Попытка Книга = Файл.Workbooks.Open(ПутьКниги); Исключение Книга = Файл.Workbooks.Add(); Книга.SaveAs(ПутьКниги); КонецПопытки; Для Каждого ФайлЛиста Из СписокФайлов Цикл НовоеИмяЛиста = ФайлЛиста.Представление; Попытка Лист = Файл.Workbooks.Open(ФайлЛиста.Значение); Исключение Продолжить; КонецПопытки; Попытка Лист.Worksheets(1).Name = НовоеИмяЛиста; Исключение Лист.Worksheets(1).Name = НовоеИмяЛиста + "ошибка"; КонецПопытки; Лист.Worksheets(1).Copy(Книга.Worksheets(1)); Лист.Close(0); КонецЦикла; Книга.Save(); Книга.Close(-1); Файл = 0; |
|||
1
zippygrill
04.05.14
✎
19:07
|
*на отдельных листах
|
|||
2
zippygrill
04.05.14
✎
19:26
|
а?
|
|||
3
Torquader
04.05.14
✎
19:29
|
Открыть табличный документ, переданный вместо имени файла - и что вы хотите - даже я не могу представить, что вы хотите от компьютера.
|
|||
4
zippygrill
04.05.14
✎
19:37
|
(3) значит техника такая: для каждого табличного документа создается временный файл excel, копируется в за ранее созданный еще один файл, ну и потом удаляем этот временный файл. ясно.
|
|||
5
su_mai
04.05.14
✎
19:55
|
(0) Можно сохранять в формате Excel средствами 1С напрямую.
ТабличныйДокумент.Записать("c:\1.xls", ТипФайлаТабличногоДокумента.XLSX); |
|||
6
zippygrill
04.05.14
✎
20:02
|
(5) это понятно. Но вопрос не в этом был.
А как это хозяйство http://screencast.com/t/eHdJsGzvlG2 привести к нормальному виду? Остановился на этот вариант Для Каждого ФайлЛиста Из СписокФайлов Цикл НовоеИмяЛиста = ФайлЛиста.Представление; тДок = ФайлЛиста.Значение; ПутьВременногоФайла = КаталогВременныхФайлов() + "\" + НовоеИмяЛиста; тДок.Записать(ПутьВременногоФайла); Попытка Лист = Файл.Workbooks.Open(ПутьВременногоФайла); Исключение Продолжить; КонецПопытки; Попытка Лист.Worksheets(1).Name = НовоеИмяЛиста; Исключение Лист.Worksheets(1).Name = НовоеИмяЛиста + "ошибка"; КонецПопытки; Лист.Worksheets(1).Copy(Книга.Worksheets(1)); Лист.Close(0); УдалитьФайлы(ПутьВременногоФайла); КонецЦикла; |
|||
7
su_mai
04.05.14
✎
20:06
|
(6) Дружище, ты попал. Ты вскрыл коды 1С и опубликовал их :)
MOXCEL - это сигнатура формата табличных документов 1С. Попробуй расширение сменить у файла на mxl и открыть его в 1С. Программно так же можно его открывать через.: ТабличныйДокумент.Открыть()... в синт. пом. смотри. |
|||
8
zippygrill
04.05.14
✎
20:10
|
(7) а с какой целью мне изменить расширение когда четко надо в xls сохранить? :)
|
|||
9
su_mai
04.05.14
✎
20:10
|
ТабличныйДокумент.Записать("c:\1.xls", ТипФайлаТабличногоДокумента.XLSX);
|
|||
10
Torquader
04.05.14
✎
20:11
|
Задача в чём - сделать файл Excel, где несколько листов ?
|
|||
11
zippygrill
04.05.14
✎
20:13
|
(9) ага я его пропустил. Невнимателен.
(10) Да. Но вроде все получилось. |
|||
12
su_mai
04.05.14
✎
20:14
|
Убери попытку - исключение тогда увидишь суть ошибки
|
|||
13
su_mai
04.05.14
✎
20:15
|
Вообще Попытку Исключение надо испорльзовать только тогда, когда та будешь обрабатывать исключительную ситуацию, а так как у тебя написано, то текст ошибки теряется и не понятно почему и что произошло.
|
|||
14
zippygrill
04.05.14
✎
22:33
|
А не подскажите еще как удалить уже сушествующие листы в файле excel?
|
|||
15
Torquader
04.05.14
✎
22:57
|
А что, в коллекции листов команды Delete нет ?
|
|||
16
zippygrill
04.05.14
✎
22:58
|
(15) ну я пробовал так писать а она послала меня
Лист.Worksheets(1).Delete(); Попытка Лист.Worksheets(1).Name = НовоеИмяЛиста; |
|||
17
zippygrill
04.05.14
✎
22:59
|
или до Open надо удалить листы?
|
|||
18
Torquader
04.05.14
✎
22:59
|
Заставил меня открыть Excel...
|
|||
19
Torquader
04.05.14
✎
23:01
|
(17) Какие листы ?
Если те, которые созданы в книге по умолчанию, то удалять их нужно перед записью. |
|||
20
Torquader
04.05.14
✎
23:01
|
Просто, если лист удалили, то в массиве будет дырка - насколько я помню - массив ассоциативный.
|
|||
21
zippygrill
04.05.14
✎
23:02
|
(19) листы которые были сохранены до этого.
|
|||
22
Torquader
04.05.14
✎
23:04
|
(21) Ты сохраняешь не лист, а всю книгу - в ней может быть несколько листов. А книгу - её не удаляют, а закрывают (Close) и открывают другую - новую.
В Excel, кстати, есть встроенная справка, где всё можно посмотреть и понять. |
|||
23
zippygrill
04.05.14
✎
23:04
|
Так а если пользователи перевыбирает не пустой файл эксель?!
|
|||
24
Torquader
04.05.14
✎
23:06
|
Что значит перевыбирает ? Если ты записываешь поверх старого файла, то он перезапишет, а если ты его открываешь - то зачем это делать ?
|
|||
25
zippygrill
04.05.14
✎
23:09
|
Ну при выборе и сохранение файла из 1С windows спрашивает Перезаписывать:?
|
|||
26
Torquader
04.05.14
✎
23:12
|
(25) Конечно, только, когда вы задаёте имя файла вручную (выбирает пользователь), то и диалог подтверждения перезаписи тоже на вашей совести.
|
|||
27
zippygrill
04.05.14
✎
23:13
|
сейчас попробую через ВыбратьКаталог а не Сохранение
|
|||
28
zippygrill
04.05.14
✎
23:13
|
у ДиалогВыбораФайла
|
|||
29
Torquader
04.05.14
✎
23:29
|
(28) Зачем вам каталог - чтобы все файлы туда запихивать ?
|
|||
30
zippygrill
04.05.14
✎
23:30
|
(29)Почему? Если дать пользователю возможность выбрать файл для сохранения то листы будут дублироваться в последующих сохранении.
|
|||
31
zippygrill
04.05.14
✎
23:36
|
В принципе режим ВыборКаталога также не переписывает уже существующие листы а добавляет их.
|
|||
32
Torquader
04.05.14
✎
23:38
|
(31) Лист - это блок (страница) в книге. Если мы записываем книгу, то мы записываем все листы и записывать её нужно, когда все листы сформированы.
Если мы хотим сохранить отдельный лист (такое тоже есть), но нужно сохранять лист (но будет другое расширение). Нужно всё-таки понять, что вам нужно. |
|||
33
zippygrill
04.05.14
✎
23:40
|
Книгу же конечно :)
|
|||
34
zippygrill
04.05.14
✎
23:42
|
если сейчас так написано
Попытка Книга = Файл.Workbooks.Open(ПутьКниги); Исключение Книга = Файл.Workbooks.Add(); Книга.SaveAs(ПутьКниги); КонецПопытки; то следует переделать на Книга = Файл.Workbooks.Add(); Книга.SaveAs(ПутьКниги); чтобы всегда сохраняла новую книгу |
|||
35
Torquader
04.05.14
✎
23:44
|
Да!
|
|||
36
zippygrill
04.05.14
✎
23:53
|
спс
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |