фонаIterate Through Workbook; Копирование и вставка данные в новую книгу
Я получаю кучу книг Excel (санкционированные расходы) от различных подразделений ДЕЛОВЫХ по всему миру. Моя цель - создать макрос, который открывает каждую рабочую книгу БИЗНЕСА, копировать данные о расходах и вставлять его в основной файл для удобства сравнения.
ПРОЦЕСС
Создать закладку для каждой бизнес-единицы в TARGET_WORKBOOK (это делается за пределами макро)
Для каждой вкладки в TARGET_WORKBOOK, есть некоторые мета-данные который помогает макросу при навигации по правильному пути к файлу BUSINESS UNIT (SOURCE_WORKBOOK)
- Открыть правильно SOURCE_WORKBOOK и перейдите к «Auth Expense данных запись» Вкладка внутри Копирование данных SOURCE_WORKBOOK
- от SOURCE_WORKBOOK до TARGET_WORKBOOK, ясно буфер обмена кэш, близкий SOURCE_BOOK
- ВЫПУСКА - Переход к следующей вкладке в SOUCE_WORKBOOK и повторите Шаг 1
КОД
Sub AllUnits()
Dim Current As Worksheet
'For every worksheet in workbook, call AuthExpense function
For Each Current In ThisWorkbook.Worksheets
Call AuthExpense(Current)
Next Current
End Sub
Sub AuthExpense(Current As Worksheet)
Dim Target_Workbook As Workbook
Dim Source_Workbook As Workbook
Dim Source_Path As String
'Configure macro for business-specific unit
BusinessUnit = ActiveSheet.Name
BusinessName = ActiveSheet.Cells(2, 2)
'Declare Target & Source workbooks w/ relative paths
Set Target_Workbook = ThisWorkbook
Source_Path = ThisWorkbook.Path & "\Business Unit Monthly Reporting Template_" & BusinessName & ".xlsx"
Set Source_Workbook = Workbooks.Open(Source_Path)
'Copy Source Workbook to Target Workbook
Source_Workbook.Sheets("Auth Expense Data Entry").Range("A1:H150").Copy
'Paste Special Source data to Target workbook
Target_Workbook.Sheets(BusinessUnit).Range("A5").PasteSpecial Paste:=xlPasteValues
'Clear clipboard cache and close
Application.CutCopyMode = False
Source_Workbook.Close (False)
End Sub
ПРИМЕЧАНИЕ
- Я могу успешно открыть, копировать, вставить, очистить кэш буфера обмена, и закройте книгу бизнес-единицы.
ВОПРОСЫ
- Мои вопросы происходит в функции перекручивание/итерации ("AllUnits()"). Когда макрос запускается, файл Master Excel копирует/вставляет те же данные бизнес-единицы 10 раз (на том же рабочем листе, переписывая себя). Я считаю, что моя проблема возникает, когда я пытаюсь перейти к следующей вкладке в главном файле. Какие-либо предложения?
В вашем подпункте AuthExpense измените все ссылки на 'ActiveSheet' на' Current', и он должен работать. – Kyle
Когда я меняю «Активный» на «Текущий», макрос только проходит через одну итерацию. Почему это происходит? – jonplaca