Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Копирование диапазона на лист в другой книге - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Копирование диапазона на лист в другой книге
Alex223 Дата: Среда, 16.08.2017, 21:59 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Всем доброго времени суток!
Столкнулся с проблемой при копировании данных с листа из одной книги в другую.
Есть большой массив данных, собираемый через Power Qwery в именованную таблицу (порядка 10 столбцов и 150 тыс. строк).
Эти данные я должен загружать в другую книгу на лист где уже содержится информация за прошлые периоды, для чего и использую макрос

[vba]
Код

Sub Загрузка()
Dim m As String
m = Range("C15").Value

Application.ScreenUpdating = False

Sheets("PIVOT").Select
Range("_1_ФОТ").Select

Selection.Copy

Workbooks.Open Filename:=m

Range("A1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Application.DisplayAlerts = False
ActiveWorkbook.Save
ActiveWorkbook.Close

Application.DisplayAlerts = True

Application.ScreenUpdating = True

MsgBox "Данные по ФОТ добавлены в файл DB_ФОТ"

End Sub

[/vba]

На шаге ActiveSheet.Paste выскакивает Run-time ошибка 1004 и сообщение:
Метод Paste из класса Worksheet завершен неверно.
Что я делаю не так? Уже все форумы просмотрел, ответов нет...


Сообщение отредактировал Alex223 - Среда, 16.08.2017, 22:55
 
Ответить
СообщениеВсем доброго времени суток!
Столкнулся с проблемой при копировании данных с листа из одной книги в другую.
Есть большой массив данных, собираемый через Power Qwery в именованную таблицу (порядка 10 столбцов и 150 тыс. строк).
Эти данные я должен загружать в другую книгу на лист где уже содержится информация за прошлые периоды, для чего и использую макрос

[vba]
Код

Sub Загрузка()
Dim m As String
m = Range("C15").Value

Application.ScreenUpdating = False

Sheets("PIVOT").Select
Range("_1_ФОТ").Select

Selection.Copy

Workbooks.Open Filename:=m

Range("A1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Application.DisplayAlerts = False
ActiveWorkbook.Save
ActiveWorkbook.Close

Application.DisplayAlerts = True

Application.ScreenUpdating = True

MsgBox "Данные по ФОТ добавлены в файл DB_ФОТ"

End Sub

[/vba]

На шаге ActiveSheet.Paste выскакивает Run-time ошибка 1004 и сообщение:
Метод Paste из класса Worksheet завершен неверно.
Что я делаю не так? Уже все форумы просмотрел, ответов нет...

Автор - Alex223
Дата добавления - 16.08.2017 в 21:59
InExSu Дата: Среда, 16.08.2017, 23:46 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 650
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Попробуйте DoEvents
[vba]
Код
Sub Загрузка()
  Dim m As String
  m = Range("C15").Value

  With Application
    .ScreenUpdating = False
    Sheets("PIVOT").Range("_1_ФОТ").Copy
    DoEvents
    Workbooks.Open Filename:=m
    Range("A1048576").End(xlUp).Offset(1, 0).Select
    DoEvents
    ActiveSheet.Paste
    .CutCopyMode = False
    .DisplayAlerts = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    .DisplayAlerts = True
    .ScreenUpdating = True
  End With
  MsgBox "Данные по ФОТ добавлены в файл DB_ФОТ"
End Sub
[/vba]


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
СообщениеПопробуйте DoEvents
[vba]
Код
Sub Загрузка()
  Dim m As String
  m = Range("C15").Value

  With Application
    .ScreenUpdating = False
    Sheets("PIVOT").Range("_1_ФОТ").Copy
    DoEvents
    Workbooks.Open Filename:=m
    Range("A1048576").End(xlUp).Offset(1, 0).Select
    DoEvents
    ActiveSheet.Paste
    .CutCopyMode = False
    .DisplayAlerts = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    .DisplayAlerts = True
    .ScreenUpdating = True
  End With
  MsgBox "Данные по ФОТ добавлены в файл DB_ФОТ"
End Sub
[/vba]

Автор - InExSu
Дата добавления - 16.08.2017 в 23:46
Alex223 Дата: Четверг, 17.08.2017, 09:42 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
InExSu, DoEvents не сработал, та же ошибка(
 
Ответить
СообщениеInExSu, DoEvents не сработал, та же ошибка(

Автор - Alex223
Дата добавления - 17.08.2017 в 09:42
and_evg Дата: Четверг, 17.08.2017, 10:17 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 496
Репутация: 100 ±
Замечаний: 0% ±

Excel 2007
А если так попробовать?
[vba]
Код
Sub Загрузка()
Dim m As String
m = Range("C15").Value

Application.ScreenUpdating = False

Sheets("PIVOT").Select
Range("_1_ФОТ").Select

Selection.Copy

Workbooks.Open Filename:=m

Range("A1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Application.DisplayAlerts = False
ActiveWorkbook.Save
ActiveWorkbook.Close

Application.DisplayAlerts = True

Application.ScreenUpdating = True

MsgBox "Данные по ФОТ добавлены в файл DB_ФОТ"

End Sub
[/vba]
 
Ответить
СообщениеА если так попробовать?
[vba]
Код
Sub Загрузка()
Dim m As String
m = Range("C15").Value

Application.ScreenUpdating = False

Sheets("PIVOT").Select
Range("_1_ФОТ").Select

Selection.Copy

Workbooks.Open Filename:=m

Range("A1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Application.DisplayAlerts = False
ActiveWorkbook.Save
ActiveWorkbook.Close

Application.DisplayAlerts = True

Application.ScreenUpdating = True

MsgBox "Данные по ФОТ добавлены в файл DB_ФОТ"

End Sub
[/vba]

Автор - and_evg
Дата добавления - 17.08.2017 в 10:17
Alex223 Дата: Четверг, 17.08.2017, 10:31 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
and_evg, это тоже не работает, я пробовал. Выдает уже другую ошибку Run-time 1004:
Application-defined or object defined error
 
Ответить
Сообщениеand_evg, это тоже не работает, я пробовал. Выдает уже другую ошибку Run-time 1004:
Application-defined or object defined error

Автор - Alex223
Дата добавления - 17.08.2017 в 10:31
and_evg Дата: Четверг, 17.08.2017, 11:27 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 496
Репутация: 100 ±
Замечаний: 0% ±

Excel 2007
Alex223, А количество вставляемых строк не выходит за предельный диапазон?
 
Ответить
СообщениеAlex223, А количество вставляемых строк не выходит за предельный диапазон?

Автор - and_evg
Дата добавления - 17.08.2017 в 11:27
Alex223 Дата: Четверг, 17.08.2017, 11:32 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
and_evg, нет, строк хватает. По сути вставляю на пустой лист порядка 150 тыс. строк. Книга формата xlsx, так что ошибка не в этом(
 
Ответить
Сообщениеand_evg, нет, строк хватает. По сути вставляю на пустой лист порядка 150 тыс. строк. Книга формата xlsx, так что ошибка не в этом(

Автор - Alex223
Дата добавления - 17.08.2017 в 11:32
Alex223 Дата: Четверг, 17.08.2017, 11:38 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Этот макрос одна из частей модуля, который производит ряд манипуляций с данными, в том числе копирование больших диапазонов, но до этого места срабатывает все нормально. Возможно к этому моменту переполняется буфер и внутренней памяти приложения просто не хватает... Вообщем для меня это пока загадка.
 
Ответить
СообщениеЭтот макрос одна из частей модуля, который производит ряд манипуляций с данными, в том числе копирование больших диапазонов, но до этого места срабатывает все нормально. Возможно к этому моменту переполняется буфер и внутренней памяти приложения просто не хватает... Вообщем для меня это пока загадка.

Автор - Alex223
Дата добавления - 17.08.2017 в 11:38
and_evg Дата: Четверг, 17.08.2017, 11:44 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 496
Репутация: 100 ±
Замечаний: 0% ±

Excel 2007
Возможно к этому моменту переполняется буфер

тогда перед этим макросом попробуй очистить буфер [vba]
Код
Application.CutCopyMode = False
[/vba]
 
Ответить
Сообщение
Возможно к этому моменту переполняется буфер

тогда перед этим макросом попробуй очистить буфер [vba]
Код
Application.CutCopyMode = False
[/vba]

Автор - and_evg
Дата добавления - 17.08.2017 в 11:44
and_evg Дата: Четверг, 17.08.2017, 11:44 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 496
Репутация: 100 ±
Замечаний: 0% ±

Excel 2007
А книга случаем не защищена? У книги не общий доступ?
 
Ответить
СообщениеА книга случаем не защищена? У книги не общий доступ?

Автор - and_evg
Дата добавления - 17.08.2017 в 11:44
Alex223 Дата: Четверг, 17.08.2017, 11:52 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
and_evg, книга не защищена,
[vba]
Код
Application.CutCopyMode = False
[/vba]
Очистка буфера этим методом не помогла(
 
Ответить
Сообщение and_evg, книга не защищена,
[vba]
Код
Application.CutCopyMode = False
[/vba]
Очистка буфера этим методом не помогла(

Автор - Alex223
Дата добавления - 17.08.2017 в 11:52
Alex223 Дата: Четверг, 17.08.2017, 19:59 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Ну что у кого-нибудь ещё есть идеи?
 
Ответить
СообщениеНу что у кого-нибудь ещё есть идеи?

Автор - Alex223
Дата добавления - 17.08.2017 в 19:59
and_evg Дата: Пятница, 18.08.2017, 07:40 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 496
Репутация: 100 ±
Замечаний: 0% ±

Excel 2007
Alex223, ну попробуйте тогда отказаться от копирования. Делайте прямым присваиванием.
Что то типа такого
[vba]
Код
Sub Загрузка()
    Dim m As String
    Dim row1, row2, col1

    Application.ScreenUpdating = False

    row1 = Worksheets("PIVOT").Range("_1_ФОТ").Rows.Count
    col1 = Worksheets("PIVOT").Range("_1_ФОТ").Columns.Count
    
    m = Range("C15").Value
    Workbooks.Open Filename:=m
    row2 = ActiveSheet.Range("A1048576").End(xlUp).Offset(1, 0).Row
    ActiveSheet.Range(Cells(row2, 1), Cells(row2 + row1 - 1, col1)).Value = _
                    ThisWorkbook.Worksheets("PIVOT").Range("_1_ФОТ").Value
    
    Application.DisplayAlerts = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Application.DisplayAlerts = True
    
    Application.ScreenUpdating = True
    MsgBox "Данные по ФОТ добавлены в файл DB_ФОТ"
End Sub
[/vba]
 
Ответить
СообщениеAlex223, ну попробуйте тогда отказаться от копирования. Делайте прямым присваиванием.
Что то типа такого
[vba]
Код
Sub Загрузка()
    Dim m As String
    Dim row1, row2, col1

    Application.ScreenUpdating = False

    row1 = Worksheets("PIVOT").Range("_1_ФОТ").Rows.Count
    col1 = Worksheets("PIVOT").Range("_1_ФОТ").Columns.Count
    
    m = Range("C15").Value
    Workbooks.Open Filename:=m
    row2 = ActiveSheet.Range("A1048576").End(xlUp).Offset(1, 0).Row
    ActiveSheet.Range(Cells(row2, 1), Cells(row2 + row1 - 1, col1)).Value = _
                    ThisWorkbook.Worksheets("PIVOT").Range("_1_ФОТ").Value
    
    Application.DisplayAlerts = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Application.DisplayAlerts = True
    
    Application.ScreenUpdating = True
    MsgBox "Данные по ФОТ добавлены в файл DB_ФОТ"
End Sub
[/vba]

Автор - and_evg
Дата добавления - 18.08.2017 в 07:40
Alex223 Дата: Пятница, 18.08.2017, 10:23 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
and_evg, сработало! Большое спасибо за помощь!!!
Сам бы я точно такой код пока не осилил. С VBA знаком не достаточно хорошо.
 
Ответить
Сообщение and_evg, сработало! Большое спасибо за помощь!!!
Сам бы я точно такой код пока не осилил. С VBA знаком не достаточно хорошо.

Автор - Alex223
Дата добавления - 18.08.2017 в 10:23
and_evg Дата: Пятница, 18.08.2017, 10:27 | Сообщение № 15
Группа: Проверенные
Ранг: Обитатель
Сообщений: 496
Репутация: 100 ±
Замечаний: 0% ±

Excel 2007
Alex223, Я рад за вас. :)
 
Ответить
СообщениеAlex223, Я рад за вас. :)

Автор - and_evg
Дата добавления - 18.08.2017 в 10:27
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!