Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Маленький простенький вопрос про excel

Маленький простенький вопрос про excel
Я
   tolok_d
 
09.01.13 - 17:32
Подскажите как через ком обьект скопировать строку и вставить ее в определенном месте.
 
 
   Lama12
 
1 - 09.01.13 - 17:33
Сделай запись макроса, там все видно будет.
   tolok_d
 
2 - 09.01.13 - 17:36
Sub Макрос1()
'
' Макрос1 Макрос
'

'
    Rows("12:12").Select
    Selection.Copy
    Rows("13:13").Select
    Selection.Insert Shift:=xlDown
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub
   tolok_d
 
3 - 09.01.13 - 17:36
просто эту часть взять?
   tolok_d
 
4 - 09.01.13 - 17:38
Никто не знает?(
   Леха Дум
 
5 - 09.01.13 - 17:46
Страница.Cells(НомерСтроки, НомерКолонки).Copy(Страница.Cells(НомерСтроки, КолвоСтолбцов + НомерКолонки));

примерно так
   tolok_d
 
6 - 09.01.13 - 17:47
Ок, сейчас буду пробывать. Потом отпишусь
   tolok_d
 
7 - 09.01.13 - 17:48
(5) спасибо
   Леха Дум
 
8 - 09.01.13 - 17:52
там кстати еще одна засада есть - если текст в ячейке больше 256 символов, тогда он будет обрезан до 256 символов и вот тут придется это все загонять в макрос
   tolok_d
 
9 - 09.01.13 - 18:16
Лист.Rows(НомерСтрокиОткуда).Copy(Лист.Rows(НомерСтрокиКуда));
   tolok_d
 
10 - 09.01.13 - 18:17
Но это заменяет просто содержание ячеек, а мне надо чтоб они не заменялись, а именно вставлялись со сдвигом
 
 Рекламное место пустует
   Леха Дум
 
11 - 09.01.13 - 18:22
ну тогда в цикле макрос, примерно такой (выдрал из старья):
Если Не ИмяКолонки = "" Тогда
                    
                    ДлиннаяСтрока = СтрЗаданий[ИмяКолонки];
                    ДлиннаяСтрока = СтрЗаменить(ДлиннаяСтрока, Символы.ПС, " ");
                    ДлиннаяСтрока = СтрЗаменить(ДлиннаяСтрока, Символ(182), " ");
                    ДлиннаяСтрока = СтрЗаменить(ДлиннаяСтрока, "'", "");
                    ДлиннаяСтрока = СтрЗаменить(ДлиннаяСтрока,""""," "); 
                   //ДлиннаяСтрока = СтрЗаменить(ДлиннаяСтрока,"       "," "); 
 
                   //ДлиннаяСтрока = СтрЗаменить(ДлиннаяСтрока,"      "," ");
 
                   //ДлиннаяСтрока = СтрЗаменить(ДлиннаяСтрока,"     "," ");
 
                   //ДлиннаяСтрока = СтрЗаменить(ДлиннаяСтрока,"    "," ");
 
                   //ДлиннаяСтрока = СтрЗаменить(ДлиннаяСтрока,"   "," ");
 
                   //ДлиннаяСтрока = СтрЗаменить(ДлиннаяСтрока,"  "," ");
 
                    Если СтрДлина(ДлиннаяСтрока)>255 Тогда
                        
                        Если СтрДлина(ДлиннаяСтрока)>900 Тогда
                            ТекстМакроса = ТекстМакроса + Символы.ПС + " ActiveSheet.Cells(" + Строка(СтрТЗ.НомСтр) + ", " + Строка(КолвоСтолбцов+к) + ").Value = """; 
                            Стр = ДлиннаяСтрока; СтрокаРазд="";
                            Пока СтрДлина(Стр)>900 Цикл
                                СтрокаРазд = СтрокаРазд+Лев(Стр,800)+"""  & _ " +Символы.ПС+"""";    
                                Стр = Сред(Стр,801);
                            КонецЦикла;    
                            СтрокаРазд = СтрокаРазд+ Стр+ """";
                           //Сообщить("Разделили строку" +Строка(СтрТЗ.НомСтр)+" "+Строка(КолвоСтолбцов+к));
 
                            ТекстМакроса = ТекстМакроса +  СтрокаРазд;
                        Иначе
                            ТекстМакроса = ТекстМакроса + Символы.ПС + " ActiveSheet.Cells(" + Строка(СтрТЗ.НомСтр) + ", " + Строка(КолвоСтолбцов+к) + ").Value = """ + ДлиннаяСтрока + """";
                        КонецЕсли;    
                    Иначе
                       //Страница.Cells(СтрТЗ.НомСтр, КолвоСтолбцов+к).NumberFormat = "@";
 
                       //Сообщить("Проверить значение: строка"+СтрТЗ.НомСтр+" столбец "+КолвоСтолбцов+к);
 
                        Страница.Cells(СтрТЗ.НомСтр, КолвоСтолбцов+к).Value = ДлиннаяСтрока;
                    КонецЕсли;    
                КонецЕсли;            
            КонецЦикла;

Если Не ПустаяСтрока(ТекстМакроса) Тогда
        
        ТекстМакроса = "Sub ПереносДлинныхСтрок()" + ТекстМакроса + Символы.ПС + "End Sub";
        
        VBComponents = ExcelApp.ActiveWorkbook.VBProject.VBComponents;
        cntComp = VBComponents.Count();
        Компонет = VBComponents.Add(1);
        VBComponents.Item(cntComp+1).CodeModule.InsertLines(1,ТекстМакроса);
        
       //ExcelApp.Application.Run("ПереносДлинныхСтрок");
 
       //VBComponents.Remove(Компонет);
 

        
    КонецЕсли;
   tolok_d
 
12 - 09.01.13 - 18:25
Ну должно же быть более простое решение?
   Леха Дум
 
13 - 09.01.13 - 18:28
Страница.Cells(НомерСтроки, НомерКолонки).Value = 
Строка(Страница.Cells(НомерСтроки, НомерКолонки).Value) + Строка(Страница.Cells(НомерСтроки, КолвоСтолбцов + НомерКолонки).Value);
   tolok_d
 
14 - 09.01.13 - 19:06
Сделал)
Лист.Rows(8).Insert(1)// добавляем одну пустую строку перед 8й строкой
 
    Лист.Rows(7).Copy(Лист.Rows(8))//Копируем содержимое 7 строки в восьмую(пустая из предидущей строки)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует