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

Вход

Регистрация

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

 

= Мир MS Excel/Экспорт данных из одной книги в другую - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Экспорт данных из одной книги в другую
Egyptian Дата: Пятница, 21.02.2025, 16:04 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 530
Репутация: 193 ±
Замечаний: 0% ±

Excel 2013/2016
Доброго всем дня. Сразу оговорюсь, файл рабочий, но вся важная информация из него удалена. Размер большой, но сама операция касается только двух книг Grids и Export. В VBA я не разбираюсь (лишь на самом начальном уровне), поэтому прошу помощи.

Итак, макрос в файле (Module1 - кнопка Save в книге Grids) экспортирует информацию из книги Grids в книгу Export, данные не перезаписываются, а каждый раз добавляются.
Суть в том, что когда число записей в книге Export переваливает за 800 макрос начинает сбоить. На вид макрос простой и понятный, но возможно в этом и есть беда.
Можно ли как-нибудь его сократить / оптимизировать?

Код:
[vba]
Код
Sub Submit()

Dim Last_Export_Raw As Integer
Dim Last_Attribute As Long
Dim Last_Chapter As Long

Set acitivitySlicer = ThisWorkbook.SlicerCaches("Slicer_Activity1")
Set guidelineSlicer = ThisWorkbook.SlicerCaches("Slicer_Guideline1")

Last_Export_Raw = Application.CountA(ThisWorkbook.Sheets("Export").Range("A:A")) + 1

Last_Attribute = Application.CountA(ThisWorkbook.Sheets("Grids").Range("A18:A100"))

'Activity
ThisWorkbook.Sheets("Export").Range("A" & Last_Export_Raw).Value = acitivitySlicer.VisibleSlicerItems(1).Caption

'Guideline

ThisWorkbook.Sheets("Export").Range("B" & Last_Export_Raw).Value = guidelineSlicer.VisibleSlicerItems(1).Caption

'Mean of communication

ThisWorkbook.Sheets("Export").Range("C" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B8")

'Case record ID

ThisWorkbook.Sheets("Export").Range("D" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B3")

'Market

ThisWorkbook.Sheets("Export").Range("E" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B4")

'Market_CSC

ThisWorkbook.Sheets("Export").Range("F" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B4")

'Evaluation date

ThisWorkbook.Sheets("Export").Range("G" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B5")

'Auditee ID

ThisWorkbook.Sheets("Export").Range("H" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B6")

'#TAG

ThisWorkbook.Sheets("Export").Range("I" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B11")

'Auditor ID

ThisWorkbook.Sheets("Export").Range("J" & Last_Export_Raw).Value = "GE-GE-1000659474"

'Sample Type

ThisWorkbook.Sheets("Export").Range("K" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B9")

'Assessment Condition

ThisWorkbook.Sheets("Export").Range("L" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B10")

'Topic-Program

ThisWorkbook.Sheets("Export").Range("M" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B12")

'Subject

ThisWorkbook.Sheets("Export").Range("N" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B13")

'Empty cell

ThisWorkbook.Sheets("Export").Range("O" & Last_Export_Raw).Value = ""

'Pot. Solution?

ThisWorkbook.Sheets("Export").Range("P" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("C4")

'Process to solve?

ThisWorkbook.Sheets("Export").Range("Q" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("C6")

'QM Final Score

ThisWorkbook.Sheets("Export").Range("R" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("N55")

'Task Category

ThisWorkbook.Sheets("Export").Range("S" & Last_Export_Raw).Value = ""

'Task Subject

ThisWorkbook.Sheets("Export").Range("T" & Last_Export_Raw).Value = ""

'MID

ThisWorkbook.Sheets("Export").Range("U" & Last_Export_Raw).Value = ""

'TID

ThisWorkbook.Sheets("Export").Range("V" & Last_Export_Raw).Value = ""

'Wrap up

ThisWorkbook.Sheets("Export").Range("W" & Last_Export_Raw).Value = ""

'QM_Chapter

ThisWorkbook.Sheets("Grids").Range("A18:A" & Last_Attribute + 17).Copy
ThisWorkbook.Sheets("Export").Range("X" & Last_Export_Raw).PasteSpecial xlPasteValues

'QM_Chapter_Score

ThisWorkbook.Sheets("Grids").Range("O18:O" & Last_Attribute + 17).Copy
ThisWorkbook.Sheets("Export").Range("Y" & Last_Export_Raw).PasteSpecial xlPasteValues

'QM_Dimension

ThisWorkbook.Sheets("Grids").Range("B18:B" & Last_Attribute + 17).Copy
ThisWorkbook.Sheets("Export").Range("Z" & Last_Export_Raw).PasteSpecial xlPasteValues

'QM_Dimension_Assessment

ThisWorkbook.Sheets("Grids").Range("L18:L" & Last_Attribute + 17).Copy
ThisWorkbook.Sheets("Export").Range("AA" & Last_Export_Raw).PasteSpecial xlPasteValues

'Comment

ThisWorkbook.Sheets("Grids").Range("M18:M" & Last_Attribute + 17).Copy
ThisWorkbook.Sheets("Export").Range("AB" & Last_Export_Raw).PasteSpecial xlPasteValues

'Drag General Information
Last_Chapter = Application.CountA(ThisWorkbook.Sheets("Export").Range("X:X"))

ThisWorkbook.Sheets("Export").Range("A" & Last_Export_Raw & ":" & "W" & Last_Export_Raw).Copy
ThisWorkbook.Sheets("Export").Range("A" & Last_Export_Raw & ":" & "W" & Last_Chapter).PasteSpecial xlPasteValues

'Selection.AutoFill Destination:=Range("AY2:AY1662")

End Sub
[/vba]
К сообщению приложен файл: quality_audit_grids_v2_2_7_feb.rar (434.9 Kb)


Сообщение отредактировал Egyptian - Пятница, 21.02.2025, 16:19
 
Ответить
СообщениеДоброго всем дня. Сразу оговорюсь, файл рабочий, но вся важная информация из него удалена. Размер большой, но сама операция касается только двух книг Grids и Export. В VBA я не разбираюсь (лишь на самом начальном уровне), поэтому прошу помощи.

Итак, макрос в файле (Module1 - кнопка Save в книге Grids) экспортирует информацию из книги Grids в книгу Export, данные не перезаписываются, а каждый раз добавляются.
Суть в том, что когда число записей в книге Export переваливает за 800 макрос начинает сбоить. На вид макрос простой и понятный, но возможно в этом и есть беда.
Можно ли как-нибудь его сократить / оптимизировать?

Код:
[vba]
Код
Sub Submit()

Dim Last_Export_Raw As Integer
Dim Last_Attribute As Long
Dim Last_Chapter As Long

Set acitivitySlicer = ThisWorkbook.SlicerCaches("Slicer_Activity1")
Set guidelineSlicer = ThisWorkbook.SlicerCaches("Slicer_Guideline1")

Last_Export_Raw = Application.CountA(ThisWorkbook.Sheets("Export").Range("A:A")) + 1

Last_Attribute = Application.CountA(ThisWorkbook.Sheets("Grids").Range("A18:A100"))

'Activity
ThisWorkbook.Sheets("Export").Range("A" & Last_Export_Raw).Value = acitivitySlicer.VisibleSlicerItems(1).Caption

'Guideline

ThisWorkbook.Sheets("Export").Range("B" & Last_Export_Raw).Value = guidelineSlicer.VisibleSlicerItems(1).Caption

'Mean of communication

ThisWorkbook.Sheets("Export").Range("C" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B8")

'Case record ID

ThisWorkbook.Sheets("Export").Range("D" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B3")

'Market

ThisWorkbook.Sheets("Export").Range("E" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B4")

'Market_CSC

ThisWorkbook.Sheets("Export").Range("F" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B4")

'Evaluation date

ThisWorkbook.Sheets("Export").Range("G" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B5")

'Auditee ID

ThisWorkbook.Sheets("Export").Range("H" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B6")

'#TAG

ThisWorkbook.Sheets("Export").Range("I" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B11")

'Auditor ID

ThisWorkbook.Sheets("Export").Range("J" & Last_Export_Raw).Value = "GE-GE-1000659474"

'Sample Type

ThisWorkbook.Sheets("Export").Range("K" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B9")

'Assessment Condition

ThisWorkbook.Sheets("Export").Range("L" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B10")

'Topic-Program

ThisWorkbook.Sheets("Export").Range("M" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B12")

'Subject

ThisWorkbook.Sheets("Export").Range("N" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("B13")

'Empty cell

ThisWorkbook.Sheets("Export").Range("O" & Last_Export_Raw).Value = ""

'Pot. Solution?

ThisWorkbook.Sheets("Export").Range("P" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("C4")

'Process to solve?

ThisWorkbook.Sheets("Export").Range("Q" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("C6")

'QM Final Score

ThisWorkbook.Sheets("Export").Range("R" & Last_Export_Raw).Value = ThisWorkbook.Sheets("Grids").Range("N55")

'Task Category

ThisWorkbook.Sheets("Export").Range("S" & Last_Export_Raw).Value = ""

'Task Subject

ThisWorkbook.Sheets("Export").Range("T" & Last_Export_Raw).Value = ""

'MID

ThisWorkbook.Sheets("Export").Range("U" & Last_Export_Raw).Value = ""

'TID

ThisWorkbook.Sheets("Export").Range("V" & Last_Export_Raw).Value = ""

'Wrap up

ThisWorkbook.Sheets("Export").Range("W" & Last_Export_Raw).Value = ""

'QM_Chapter

ThisWorkbook.Sheets("Grids").Range("A18:A" & Last_Attribute + 17).Copy
ThisWorkbook.Sheets("Export").Range("X" & Last_Export_Raw).PasteSpecial xlPasteValues

'QM_Chapter_Score

ThisWorkbook.Sheets("Grids").Range("O18:O" & Last_Attribute + 17).Copy
ThisWorkbook.Sheets("Export").Range("Y" & Last_Export_Raw).PasteSpecial xlPasteValues

'QM_Dimension

ThisWorkbook.Sheets("Grids").Range("B18:B" & Last_Attribute + 17).Copy
ThisWorkbook.Sheets("Export").Range("Z" & Last_Export_Raw).PasteSpecial xlPasteValues

'QM_Dimension_Assessment

ThisWorkbook.Sheets("Grids").Range("L18:L" & Last_Attribute + 17).Copy
ThisWorkbook.Sheets("Export").Range("AA" & Last_Export_Raw).PasteSpecial xlPasteValues

'Comment

ThisWorkbook.Sheets("Grids").Range("M18:M" & Last_Attribute + 17).Copy
ThisWorkbook.Sheets("Export").Range("AB" & Last_Export_Raw).PasteSpecial xlPasteValues

'Drag General Information
Last_Chapter = Application.CountA(ThisWorkbook.Sheets("Export").Range("X:X"))

ThisWorkbook.Sheets("Export").Range("A" & Last_Export_Raw & ":" & "W" & Last_Export_Raw).Copy
ThisWorkbook.Sheets("Export").Range("A" & Last_Export_Raw & ":" & "W" & Last_Chapter).PasteSpecial xlPasteValues

'Selection.AutoFill Destination:=Range("AY2:AY1662")

End Sub
[/vba]

Автор - Egyptian
Дата добавления - 21.02.2025 в 16:04
MikeVol Дата: Пятница, 21.02.2025, 16:39 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 398
Репутация: 88 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
Egyptian, Доброго времени суток. У вас много обрашений лишних к листам. Пробуйте следущий код с использованием массива данных, незнаю как на больших объёмах будет работать. Но думаю что быстрее первоначального кода.
Может кто ещё оптимальнее напишит код. Удачи.


Ученик.
Одесса - Украина
 
Ответить
СообщениеEgyptian, Доброго времени суток. У вас много обрашений лишних к листам. Пробуйте следущий код с использованием массива данных, незнаю как на больших объёмах будет работать. Но думаю что быстрее первоначального кода.
Может кто ещё оптимальнее напишит код. Удачи.

Автор - MikeVol
Дата добавления - 21.02.2025 в 16:39
Egyptian Дата: Понедельник, 24.02.2025, 20:40 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 530
Репутация: 193 ±
Замечаний: 0% ±

Excel 2013/2016
MikeVol, Николай, извиняюсь, за долгий ответ. Ваш код прекрасно работает. Субъективно быстрее того, что есть. Я даже смог кое-что в него добавить. Спасибо большое и плюсик в карму!
 
Ответить
СообщениеMikeVol, Николай, извиняюсь, за долгий ответ. Ваш код прекрасно работает. Субъективно быстрее того, что есть. Я даже смог кое-что в него добавить. Спасибо большое и плюсик в карму!

Автор - Egyptian
Дата добавления - 24.02.2025 в 20:40
  • Страница 1 из 1
  • 1
Поиск:

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