Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Макрос: Копирование и вставка данных / 11 сообщений из 11, страница 1 из 1
17.01.2010, 16:39
    #36414583
Alisya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос: Копирование и вставка данных
Привет!
Все делается в Excel.
Есть два листа в разных книгах, с первой книги я скопировала данные в буфери эта книга стала активной...
А теперь хочу эти данные вставить во вторую книгу на второй лист, при этом надо сделать эту книгу активной, выделить ячейки "A1:K966" и вставить именно в них данные из буфера.
Не подскажите как это сделать!
Макрос вызывается из второй книги, куда вставляются данные.
Заранее спасибо!
...
Рейтинг: 0 / 0
17.01.2010, 17:54
    #36414651
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос: Копирование и вставка данных
Alisya,

если нажмете на запись макроса и проделаете описанные Вами действия, то получите нужный код.
...
Рейтинг: 0 / 0
17.01.2010, 18:56
    #36414723
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос: Копирование и вставка данных
Если не обязательно копировать так явно данные в буфер: данные копируются в фоне и вставляются в А1.
"выделить ячейки "A1:K966" и вставить именно в них данные из буфера" - зачем? Достаточно указать начало области копирования.

Код: plaintext
1.
2.
3.
4.
5.
6.
Sub tt()
With GetObject("c:\Книга1.xls").Sheets( 1 )
.[A1:K966].Copy [a1]
.Parent.Close SaveChanges:=False ' или True, закрываем источник
End With
End Sub
...
Рейтинг: 0 / 0
17.01.2010, 20:08
    #36414778
Alisya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос: Копирование и вставка данных
Макрос выглядит так

Sub План()
Dim Path As String
Dim ActiveWB As Workbook
Set ActiveWB = ActiveWorkbook
Worksheets("Лист2").Cells.ClearContents
'ChDir "C:\Documents and Settings\Alisya\Рабочий стол\Для диплома111"
'Workbooks.Open Filename:= _
'"C:\Documents and Settings\Alisya\Рабочий стол\Для диплома111\220201.65_E.xls"
Path = GetFolderPath

Set ex = CreateObject("Excel.Application")

Set oCurrExc = ex.Workbooks.Open(Path)

ex.Visible = True

ex.Sheets("План").Select
Range("A1:K966").Select
Selection.Copy
Windows(ActiveWB.Name).Activate

'ThisWorkbooks.Activate
'Workbooks("ВОРД.xls").Activate

ActiveWB.Sheets("Лист2").Select
Range("A1:K966").Select
ActiveSheet.Paste
'ActiveWB.ActiveSheet.Paste
ActiveSheet.Columns.AutoFit
ActiveSheet.Rows.AutoFit
ex.Quit
End Sub

В конце та самая вставка, как мне сделать чтоб это заработало? =))
...
Рейтинг: 0 / 0
17.01.2010, 21:46
    #36414875
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос: Копирование и вставка данных
Alisya,

если вас не интересует способ получения этих данных (я имею ввиду не пугает, что книга будет открываться и закрываться) то код примерно такой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub План()
Dim ActiveBook As String
Dim ActiveWB, NewWB As Workbook

Path = "E:\Бла..Бла..Бла"

Set ActiveWB = ActiveWorkbook

Sheets("Лист2").Cells.ClearContents  ' очищаем лист 2 в текущей книге
  

Set NewWB = Workbooks.Open(Path)  ' открываем новую книгу
    Sheets("План").Select                 ' выбираем лист
    Range("A1:K966").Select              ' выделяем диапазон
    Selection.Copy Destination:=ActiveWB.Sheets("Лист2").Range("A1")     ' копируем диапазон в нашу книгу
    Application.DisplayAlerts = False    ' отключаем уведомления
NewWB.Close                                 'закрываем новую книгу без сохранения
    Application.DisplayAlerts = True     ' включаем уведомления
    


End Sub

если книгу фактически открывать не нужно, а нужно просто получить из нее данные, то это совсем другой метод. Рекордсеты и т.п.
...
Рейтинг: 0 / 0
17.01.2010, 21:47
    #36414879
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос: Копирование и вставка данных
Shamanus,

ошибся во второй строке
Dim Path As String вместо Dim ActiveBook As String
...
Рейтинг: 0 / 0
17.01.2010, 22:17
    #36414915
Alisya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос: Копирование и вставка данных
Большое спасибо!!!
...
Рейтинг: 0 / 0
18.01.2010, 09:23
    #36415232
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос: Копирование и вставка данных
Чем мой код не подошёл? Коротенько и прозрачно. Копирует с форматами, как в задаче. Немного подкорректировал по месту, поставьте свой путь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub План()
Sheets("Лист2").Cells.ClearContents  ' очищаем лист 2 в текущей книге
With GetObject("c:\Книга1.xls").Sheets( 1 ) 'здесь путь, откуда копировать
.[A1:K966].Copy [a1] 'а1 - это куда копировать
.Parent.Close SaveChanges:=False ' или True, закрываем источник
End With
ActiveSheet.Columns.AutoFit
ActiveSheet.Rows.AutoFit
End Sub
...
Рейтинг: 0 / 0
18.01.2010, 09:27
    #36415236
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос: Копирование и вставка данных
И кстати без переменных, вполне вверху можно Option Explicit добавить :)
...
Рейтинг: 0 / 0
22.01.2010, 11:28
    #36424620
Alisya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос: Копирование и вставка данных
Hugo121, спасибо большое за помощь!!!!
Просто сначала ваш код мне был не очень понятен, спасибо за комментарии=)
...
Рейтинг: 0 / 0
22.01.2010, 11:54
    #36424702
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос: Копирование и вставка данных
мона так, копирование только данных из Листа1 в Лист2
Код: plaintext
1.
2.
3.
Dim x
x = Лист1.Range("A1:K966")
Лист2.Range("A1:K966") = x
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Макрос: Копирование и вставка данных / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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