Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Копирование данных из одного листа Excel на другой / 15 сообщений из 15, страница 1 из 1
16.04.2008, 10:55
    #35258093
Дмитрий_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
Добрый день!

Задача такая. Есть книга, в ней несколько листов (например 5). Четыре их них скрыто. На первом, открытом листе, есть две кнопки, в зависимости от выбора кнопки, на первый открытый лист копируются данные из второго листа, причем не все, а 1 до 50 строки. Кнопки становятся невидимыми. Две других кнопки добавляются в конец скопированных данных. Опять же при нажатии на одну из них, начиная с 52 строки добавляются данные на первый лист из третьего листа, и т.д. В конце кнопка завершить, сохраняет файл и закрывает приложение. Причем, необходимо сохранить форматирование на листах (высоту строк и ширину столбцов).

Подскажите, как правильно написать код копирования данных из одного листа на другой. Форум читал, но опыта программирования мало, не смог адаптировать под свой случай.

Заранее спасибо.
...
Рейтинг: 0 / 0
16.04.2008, 16:07
    #35259479
Дмитрий_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
Как скопировать данные разобрался:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub Copy_Data()
' Копирование листа
    Sheets("Aff_YL").Select 'Выбор листа 
    Range("A1:AG49").Select 'Выбор диапазона
    Selection.Copy 
    Sheets("Лист1").Select ' Куда копируем
    Range("A1").Select ' Начиная с какой ячейки вставлять диапазон
    ActiveSheet.Paste ' Вставка
 End Sub

Может кто-нибудь знает, как сохранить форматирование при копировании?
...
Рейтинг: 0 / 0
16.04.2008, 17:49
    #35259952
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
PasteSpecial xlPasteAll
...
Рейтинг: 0 / 0
16.04.2008, 19:06
    #35260122
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
Дмитрий_NКак скопировать данные разобрался:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub Copy_Data()
' Копирование листа
    Sheets("Aff_YL").Select 'Выбор листа 
    Range("A1:AG49").Select 'Выбор диапазона
    Selection.Copy 
    Sheets("Лист1").Select ' Куда копируем
    Range("A1").Select ' Начиная с какой ячейки вставлять диапазон
    ActiveSheet.Paste ' Вставка
 End Sub

Может кто-нибудь знает, как сохранить форматирование при копировании?

То же, но короче и эффективнее (быстро и без выделения результирующего диапазона):

Код: plaintext
1.
2.
Sub Copy_Data()
    Sheets("Aff_YL").Range("A1:AG49").Copy Range("A1")
End Sub

или если нужно копировать только значения:

Код: plaintext
1.
2.
3.
4.
Sub Copy_Data()
    With Sheets("Aff_YL").Range("A1:AG49")
        Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value
    End With
End Sub
...
Рейтинг: 0 / 0
16.04.2008, 19:08
    #35260126
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
С указанием листа назначения...

Код: plaintext
1.
2.
Sub Copy_Data()
    Sheets("Aff_YL").Range("A1:AG49").Copy Sheets("Лист1").Range("A1")
End Sub

Код: plaintext
1.
2.
3.
4.
Sub Copy_Data()
    With Sheets("Aff_YL").Range("A1:AG49")
        Sheets("Лист1").Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value
    End With
End Sub


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
17.04.2008, 08:38
    #35260685
Дмитрий_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
KL (XL)
С указанием листа назначения...

Код: plaintext
1.
2.
Sub Copy_Data()
    Sheets("Aff_YL").Range("A1:AG49").Copy Sheets("Лист1").Range("A1")
End Sub

Код: plaintext
1.
2.
3.
4.
Sub Copy_Data()
    With Sheets("Aff_YL").Range("A1:AG49")
        Sheets("Лист1").Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value
    End With
End Sub


KL
[MVP - Microsoft Excel]

Спасибо, буду использовать! А как сделать, чтобы при использовании этой конструкции, созранялось исходное форматирование?
big-duke
PasteSpecial xlPasteAll


Если можно, поподробнее.. с синтаксисом
...
Рейтинг: 0 / 0
17.04.2008, 09:24
    #35260775
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
Дмитрий_N...А как сделать, чтобы при использовании этой конструкции, созранялось исходное форматирование?...
Если можно, поподробнее. Исходное форматирование чего, диапазона, который копируем или того, куда вставляем? Какое конкретно форматирование?
...
Рейтинг: 0 / 0
17.04.2008, 10:39
    #35260979
Дмитрий_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
KL (XL)
Если можно, поподробнее. Исходное форматирование чего, диапазона, который копируем или того, куда вставляем? Какое конкретно форматирование?

Ситуация такая. Лист "Aff_YL", откуда копируем - имеет разную ширину столбцов, высоту строк и объединенные ячейки. Хотелось, чтобы в "Лист1", куда вставляем, структура переносилась полностью...
...
Рейтинг: 0 / 0
17.04.2008, 14:01
    #35261854
Дмитрий_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
И еще, у меня появился вопрос. Подскажите, как найти последнюю строку диапазона, чтобы через пустую строку добавить новые данные?
...
Рейтинг: 0 / 0
18.04.2008, 08:37
    #35263477
Дмитрий_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
Дмитрий_NИ еще, у меня появился вопрос. Подскажите, как найти последнюю строку диапазона, чтобы через пустую строку добавить новые данные?
Нашел то, что мне подходит. Лежит здесь, может кому понадобится:

http://www.sql.ru/forum/actualthread.aspx?tid=396213

Я использовал первый вариант с Function LastCell, ищет адрес ячейки во всем листе... Вопрос с форматированием пока открыт... Я пока сделал так.. В подпрограмме, которая копирует данные вручную задал ширину столбцов и строк.. Может есть другой способ?
...
Рейтинг: 0 / 0
18.04.2008, 14:07
    #35264657
Дмитрий_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
Немного разобрался...
Код: plaintext
Selection.PasteSpecial xlPasteAll
Вставляет данные без сохранение ширины столбцов и строк
Код: plaintext
Selection.PasteSpecial xlPasteColumnWidths
Сохраняет ширину столбцов как у копируемого листа...
Как тоже самое сделать со строками?
...
Рейтинг: 0 / 0
22.04.2008, 19:31
    #35272459
Дмитрий_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
Есть решение, догадался не сам, подсказали на другом форуме... Может кому пригодится:
При копировании нужно использовать следущую конструкцию..
Код: plaintext
Selection.EntireRow.Copy
А при вставке, вместе с тем, что было указано в предыдущем посте, нужно добавить..
Код: plaintext
Selection.EntireRow.PasteSpecial xlPasteFormats
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
14.02.2011, 11:34
    #37114589
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
Попробовал код работает если есть лист Sheet2, а если понадобиться надо имя листа взять из листа Sheet1 в яйчейках от I2:I37
как сообразить что надо сделать цикл поставить???????????
Код: plaintext
1.
2.
3.
4.
Sub Copy_Data()
With Sheets("Sheet1").Range("A1:H37")
Sheets("Sheet2").Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value
End With
End Sub
...
Рейтинг: 0 / 0
14.02.2011, 11:39
    #37114597
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
Написал так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub Copy_Data()
For n =  2  To  45 
m = Range("I" & n)
    With Sheets("Sheet1").Range("A1:H37")
        Sheets.Add.Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value
    End With
Next n
End Sub
Так он мне выдал все 46 листов с одинаковыми данными Как сделать так чтобы поочередно, пошагово
-сначала заполнить лист1
-активировать модуль
-код создал бы первый лист с именем 1

потом
-заполнить лист1 с другими данными
-активировать модуль
-код создал бы первый лист с именем 2
и т.д.
Спасибо
...
Рейтинг: 0 / 0
14.02.2011, 22:18
    #37115893
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных из одного листа Excel на другой
Что то вроде
Код: plaintext
1.
set ws = Sheets.Add.Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value
ws.name=....
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Копирование данных из одного листа Excel на другой / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]