|
Маленький простенький вопрос про excel | ☑ | ||
---|---|---|---|---|
0
tolok_d
09.01.13
✎
17:32
|
Подскажите как через ком обьект скопировать строку и вставить ее в определенном месте.
|
|||
1
Lama12
09.01.13
✎
17:33
|
Сделай запись макроса, там все видно будет.
|
|||
2
tolok_d
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 |
|||
3
tolok_d
09.01.13
✎
17:36
|
просто эту часть взять?
|
|||
4
tolok_d
09.01.13
✎
17:38
|
Никто не знает?(
|
|||
5
Леха Дум
09.01.13
✎
17:46
|
Страница.Cells(НомерСтроки, НомерКолонки).Copy(Страница.Cells(НомерСтроки, КолвоСтолбцов + НомерКолонки));
примерно так |
|||
6
tolok_d
09.01.13
✎
17:47
|
Ок, сейчас буду пробывать. Потом отпишусь
|
|||
7
tolok_d
09.01.13
✎
17:48
|
(5) спасибо
|
|||
8
Леха Дум
09.01.13
✎
17:52
|
там кстати еще одна засада есть - если текст в ячейке больше 256 символов, тогда он будет обрезан до 256 символов и вот тут придется это все загонять в макрос
|
|||
9
tolok_d
09.01.13
✎
18:16
|
Лист.Rows(НомерСтрокиОткуда).Copy(Лист.Rows(НомерСтрокиКуда));
|
|||
10
tolok_d
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(Компонет); КонецЕсли; |
|||
12
tolok_d
09.01.13
✎
18:25
|
Ну должно же быть более простое решение?
|
|||
13
Леха Дум
09.01.13
✎
18:28
|
Страница.Cells(НомерСтроки, НомерКолонки).Value =
Строка(Страница.Cells(НомерСтроки, НомерКолонки).Value) + Строка(Страница.Cells(НомерСтроки, КолвоСтолбцов + НомерКолонки).Value); |
|||
14
tolok_d
09.01.13
✎
19:06
|
Сделал)
Лист.Rows(8).Insert(1);// добавляем одну пустую строку перед 8й строкой Лист.Rows(7).Copy(Лист.Rows(8));//Копируем содержимое 7 строки в восьмую(пустая из предидущей строки) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |