|
Не сохраняется формируемый отчет в Excel 2013 | ☑ | ||
---|---|---|---|---|
0
Vakinyan
11.08.14
✎
14:11
|
Есть отчет. Формируется и выгружается сначала одним листом, потом формируются листы при обходе по группировкам результата запроса (того, из которого берутся данные для отчета). На предыдущих Экселях все работает огонь, формируется и сохраняется без ошибок. Если версия равна 15.0 (Эксель 2013), вываливается ошибка типа "Метод SaveAs из класса Workbook завершен неверно" в двух местах: сначала на перемещении в создаваемой книги определенного листа(для метода Move) , второй раз при сохранении книги(метод SaveAs). Пыталась сохранять с другими типами и файлформатами - бесполезно
|
|||
1
Vakinyan
11.08.14
✎
14:13
|
ExcelObject = Новый ComОбъект("Excel.Application");
// Выгружается карточка учета сырья Попытка ExcelObject.Displayalerts = 0; // 1 сформировать отчет качественного сырья ------------ ИмяЛиста1 = "Отчет о движении сырья"; ИмяВременногоФайла = КаталогВременныхФайлов() + "Temp1.xls"; ТабДок = Новый ТабличныйДокумент; ПечатьКарточкаУчетаСырья(ПостроительОтчетаКарточкаУчетаСырья, ТабДок, Неопределено, , "ЧГ="); КарточкаУчетаСырьяИнициализация(ПостроительОтчетаКарточкаУчетаСырья); ТабДок.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.HTML); ExcelObject.Workbooks.Open(ИмяВременногоФайла); ExcelObject.ActiveSheet.Name = СформироватьИмяЛистаExcel(ИмяЛиста1); // сохранение ------------------------------------------ Fileformat = -4143; Password = ""; WriterPassword = ""; ReadonlyRecommended = 0; CreateBackup = 0; ExcelObject.Range(ExcelObject.Cells(4, 2), ExcelObject.Cells(ТабДок.ВысотаТаблицы, 10)).Select(); ExcelObject.Selection().NumberFormat = "# ##0,00"; ExcelObject.ActiveWorkbook.SaveAs(ТекущийКаталог + ИмяФайла, Fileformat, Password, WriterPassword, ReadonlyRecommended, CreateBackup); // 3 сформировать отчеты сырья по группам -------------- Расшифровка = Истина; ПостроительОтчетаКарточкаУчетаСырья.Выполнить(); ВыборкаПоГруппам = ПостроительОтчетаКарточкаУчетаСырья.Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Группа"); Сч = 3; Пока ВыборкаПоГруппам.Следующий() Цикл ИмяЛистаН = ?(ЗначениеЗаполнено(ВыборкаПоГруппам.Группа) И ЗначениеЗаполнено(ВыборкаПоГруппам.Группа.Наименование), ВыборкаПоГруппам.Группа.Наименование, "Вне группы"); Если Сч = 3 Тогда ИмяЛиста2 = ИмяЛистаН КонецЕсли; ИмяВременногоФайла = КаталогВременныхФайлов() + "Temp" + Сч + ".xls"; Настройка = ПостроительОтчетаКарточкаУчетаСырья.ПолучитьНастройки(Истина, Ложь, Ложь, Ложь, Ложь); КарточкаУчетаСырьяИнициализация(ПостроительОтчетаКарточкаУчетаСырья, Истина); ПостроительОтчетаКарточкаУчетаСырья.УстановитьНастройки(Настройка, Истина, Ложь, Ложь, Ложь, Ложь); ЭлементОтбора = ПостроительОтчетаКарточкаУчетаСырья.Отбор.Добавить("Группа"); ЭлементОтбора.Установить(?(ВыборкаПоГруппам.Группа = NULL, Справочники.ГруппыВзаимозаменяемыхОбъектов.ПустаяСсылка(), ВыборкаПоГруппам.Группа)); ЭлементОтбора.ВидСравнения = ВидСравнения.Равно; ТабДок = Новый ТабличныйДокумент; ПечатьКарточкаУчетаСырья(ПостроительОтчетаКарточкаУчетаСырья, ТабДок, Истина, Истина, "ЧГ="); ПостроительОтчетаКарточкаУчетаСырья.УстановитьНастройки(Настройка, Истина, Ложь, Ложь, Ложь, Ложь); ТабДок.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.HTML); ExcelObject.Workbooks.Open(ИмяВременногоФайла); ExcelObject.ActiveSheet.Name = СформироватьИмяЛистаExcel(ИмяЛистаН); ExcelObject.Range(ExcelObject.Cells(4, 6), ExcelObject.Cells(ТабДок.ВысотаТаблицы, 10)).Select(); ExcelObject.Selection().NumberFormat = "# ##0,00"; Before = ExcelObject.Workbooks(ИмяФайла).Sheets(ИмяЛиста1); ExcelObject.ActiveSheet.Copy(Before); //УдалитьФайлы(ИмяВременногоФайла); Состояние(ВыборкаПоГруппам.Группа); Сч = Сч + 1; КонецЦикла; Расшифровка = Неопределено; Before = ExcelObject.Workbooks(ИмяФайла).Sheets(ИмяЛиста2); ExcelObject.Sheets(ИмяЛиста1).Move(Before); ExcelObject.Windows(ИмяФайла).DisplayWorkbookTabs = Истина; ExcelObject.Windows(ИмяФайла).TabRatio = 0.6; ExcelObject.Workbooks(ИмяФайла).SaveAs(ТекущийКаталог + ИмяФайла); Предупреждение("Файл сформирован."); |
|||
2
Vakinyan
11.08.14
✎
15:14
|
Up
|
|||
3
Vakinyan
12.08.14
✎
15:28
|
Да неужель никто помочь не хочет
|
|||
4
fmrlex
12.08.14
✎
15:30
|
Смотри что у тебя в (ТекущийКаталог + ИмяФайл)
|
|||
5
fmrlex
12.08.14
✎
15:33
|
+(4) Может так(ТекущийКаталог() + ИмяФайл)?
|
|||
6
Vakinyan
13.08.14
✎
13:34
|
(5) В Текущем Каталоге все огонь и хорошо отрабатывает. Например, эту строчку
ExcelObject.ActiveWorkbook.SaveAs(ТекущийКаталог + ИмяФайла, Fileformat, Password, WriterPassword, ReadonlyRecommended, CreateBackup); Оно отрабатывает без ошибок. |
|||
7
Лодырь
13.08.14
✎
13:59
|
If Val(Application.Version) < 12 Then
' You use Excel 97-2003 FileExtStr = ".xls": FileFormatNum = -4143 Else ' you use excel 2007 or later FileExtStr = ".xls": FileFormatNum = 56 End If |
|||
8
Vakinyan
13.08.14
✎
16:08
|
(7) Делала. Не работает. Фишка в том, что и на 2007, и на 2010 мой код работает. На 2013 - нет
|
|||
9
Vakinyan
20.08.14
✎
14:34
|
up
|
|||
10
dk
20.08.14
✎
15:02
|
справку по saveas в 2013 смотрел?
|
|||
11
Chum
20.08.14
✎
15:09
|
Select Case Sourcewb.FileFormat
Case 51: FileExtStr = ".xlsx": FileFormatNum = 51 Case 52: If .HasVBProject Then FileExtStr = ".xlsm": FileFormatNum = 52 Else FileExtStr = ".xlsx": FileFormatNum = 51 End If Case 56: FileExtStr = ".xls": FileFormatNum = 56 Case Else: FileExtStr = ".xlsb": FileFormatNum = 50 End Select |
|||
12
Vakinyan
21.08.14
✎
10:33
|
(10) Смотрела, написано все то же самое, что и у (11) . Проблема в том, что нифига эт не помогает. То есть я пробовала сохранять workbook и в формате xlsx с файлформатом 51, и в в формате xls c 56
|
|||
13
Vakinyan
25.08.14
✎
10:04
|
эх
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |