Я работаю над автоматизацией модели Excel путем копирования данных из других листов в мастер-файл. У меня есть небольшая проблема, что после добавления кода файл изменился с 25 МБ до 60 МБ, без изменения содержимого, только с добавлением кода. Ниже вы можете найти фрагмент того, как я автоматизировал импорт
Sub copytest() 'Procedure for retrieving data from the sourcefiles
Dim wbTarget, wbSource As Workbook
Dim target As Object
Dim pathSource, fileName As String
Dim xlApp As Application
Dim lastRow As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
'path where the data source folders are located (please keep all of them in the same directory)
pathSource = "C:\Users\vferraz\Desktop\crm stock\RAPOARTE IMPORTANTE\18.02\Rapoarte pentru Handsets\"
Set wbTarget = ThisWorkbook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Application.CutCopyMode = False
'Stock 0001
Set wbSource = xlApp.Workbooks.Open(pathSource & "Stoc 0001.xls")
wbSource.Sheets(1).UsedRange.Copy
wbSource.Close
Set target = wbTarget.Sheets("Stock 0001")
target.UsedRange.Clear
Range("A1").Select
target.Paste
xlApp.Quit
Set wbSource = Nothing
Set xlApp = Nothing
ThisWorkbook.Sheets("Mastersheet").Activate
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
В приведенном выше фрагменте я добавил только разбор одного файла (Stock 0001), но тот же метод сделан для других 10-15 файлов.
У кого-нибудь есть идеи по улучшению эффективности / размера этого файла на основе этой процедуры?
P.S. Я знаю, что метод «Вставить» может добавлять форматы, а не только значения, затем я попытался добавить .PasteSpecial xlPasteValues
вместо вставки, но в конечном итоге выдает ошибки, которые я не смог определить
Обновление:
На основе этого решения, это новая версия, которую я пробовал:
Stock 0001
Set wbSource = xlApp.Workbooks.Open(pathSource & "Stoc 0001.xls")
lastRow = wbSource.Sheets(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
wbTarget.Sheets("Stock 0001").Cells.Clear
wbSource.Sheets(1).Range("A1:C" & lastRow).Copy Destination:=wbTarget.Sheets("Stock 0001").Range("A1")
wbSource.Clo
Строка wbSource.Sheets(1).Range("A1:C" & lastRow).Copy Destination:=wbTarget.Sheets("Stock 0001").Range("A1"
Выдает «метод копирования класса диапазона с ошибкой.