Имя: Пароль:
1C
1С v8
Как прописать формулу в записанном документе Excel используя ADODB.Connection
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();
1 Волшебник
 
модератор
15.10.13
16:15
установить Excel на всех машинах
2 shuhard
 
15.10.13
16:17
(0) для этого предназначен не ADODB, а  ADOX
3 Natalika
 
15.10.13
16:20
(2) Я оба объекта использовала. Но я не знаю, как правильно с ними работать. Подскажите пожалуйста.
4 shuhard
 
15.10.13
20:25
(3) MSDN в помощь