0
Natalika
15.10.13
✎
16:12
|
Я сохраняю из 1С в Эксель прайс номенклатуры, а потом мне надо с помощью COMОбъекта "ADODB.Connection" прописать в последней колонке формулу. С помощью объекта "Excel.Application" написала, работает, но Excel не на всех машинах установлен.
Вот мой код:
СтрокаСоединения ="Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " +ИмяФайлаЭксель +" ; Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""";
Connection = Новый COMОбъект("ADODB.Connection");
Connection.ConnectionString = СтрокаСоединения;
Попытка
Connection.Open();
Исключение
Сообщить ("Проблемы с подключением к Excel" );
Возврат;
КонецПопытки;
Catalog =Новый COMОбъект("ADOX.Catalog");
Catalog.ActiveConnection = Connection;
ИмяТаблицы="";
Для каждого Лист ИЗ Catalog.Tables Цикл
ИмяТаблицы=Лист.Name;
Прервать;
КонецЦикла;
RS = Новый COMОбъект("ADODB.Recordset");
ТекстЗапроса =
"SELECT
| Лист.*
|FROM
| ["+ИмяТаблицы+"] as Лист";
попытка
RS.Open(ТекстЗапроса, Connection);
исключение
Сообщить ("Проблемы с выполнением запроса");
Возврат;
КонецПопытки;
Command =Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;
Command.CommandType = 1;
Колонка = "J";
НомерСтроки=0;
Пока RS.EOF() = 0 Цикл
НомерСтроки=НомерСтроки+1;
ТекСтрока = Формат(НомерСтроки, "ЧГ=0");
//Excel.Range(Колонка + ТекСтрока).Formula = "=if(D"+ТекСтрока+"*E"+ТекСтрока+"=0,"""",D"+ТекСтрока+"*E"+ТекСтрока+")";
Если НомерСтроки>17 Тогда
ФормулаСтроки="=if(D"+ТекСтрока+"*E"+ТекСтрока+"=0,"""",D"+ТекСтрока+"*E"+ТекСтрока+")";
Command.CommandText = "INSERT INTO [" + ИмяТаблицы + "] VALUES (@ФормулаСтр)";
Command.Parameters("@ФормулаСтр").Value = "Строка формулы";
Попытка
Command.Execute();
Исключение
Сообщить("Не удалось записать строку " + ТекСтрока);
КонецПопытки;
КонецЕсли;
RS.MoveNext();
КонецЦикла;
RS.Close();
Connection.Close();
|
|