Имя: Пароль:
1C
1С v8
Использование Copy-Paste в Excel.Application
0 slafor
 
20.08.20
16:39
Надо первую строку файла Excel использовать в качестве шаблона при генерации других строк того же файла. Я пишу так:

Эксель.Workbooks.Open(ЭтотОбъект.ИмяФайла);
Эксель.DisplayAlerts = Ложь;    
Лист = Эксель.Worksheets(1);    

И далее:

НомерТекущейСтрокиЭксель = НомерТекущейСтрокиЭксель + 1;
Если НомерТекущейСтрокиЭксель <> НомерПервойСтрокиЭксель Тогда
    Эксель.Rows(НомерПервойСтрокиЭксель).Select();                                                                                                                                                                                                                                        
    Эксель.Rows(НомерПервойСтрокиЭксель).Copy();
    Эксель.Rows(НомерТекущейСтрокиЭксель).Insert();                                                                                                                                                                                               КонецЕсли;

При этом используется буфер обмена? Что будет, если пользователь одновременно с этим захочет использовать буфер обмена для своих целей?

Можно ли как-то иначе скопировать строку для использования ее в качестве шаблона (с сохранением форматирования и т.д.)?
1 acht
 
20.08.20
16:53
Поставь брякпоинт, проверь что в буфере, запусти второй сеанс.
Что ж ты такой неуверенный?
2 slafor
 
20.08.20
17:07
(1) Там вообще интересная тема, даже без брякпойнта.

Работаю в удаленном сеансе по rdp, там крутится моя обработка. Которая использует буфер обмена.
А в основном сеансе я буфером воспользоваться уже не могу - копирую участок текста, а вставляется - строка из эксель-файла.

Может быть, есть другие способы скопировать строку эксель с сохранением форматирования, без использования копи-паста?
3 slafor
 
20.08.20
17:08
В экселе он все копирует правильно.
4 acht
 
20.08.20
17:17
(2) > другие способы скопировать строку
Range("B1").Interior.Color = Range("A1").Interior.Color
и т. п.
5 acht
 
20.08.20
17:22
Или вот подсказывают:
Worksheets(2).Range("A1:B2").Value(xlRangeValueXMLSpreadsheet) = Worksheets(1).Range("A1:B2").Value(xlRangeValueXMLSpreadsheet)
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.