Страницы: 1
RSS
Уменьшение большого размера файла с макросами, Поиск решения проблемы большого размера файла с макросами
 
Доброго вечера уважаемые знатоки. Наверное попрошу о многом.
имеется код который образует новый файл, но слишком большой.(прикрепленный Z-DingDan)
Код
Private Sub Workbook_Open()
    ActiveSheet.Paste
    Selection.ColumnWidth = 7
    Columns("C:C").Cut
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight
    Columns("B:B").Select
    Selection.Cut
    Columns("H:H").Select
    Selection.Insert Shift:=xlToRight
    Rows("2:2").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
    ActiveSheet.Range("$A$2:$E$10000").AutoFilter Field:=5, Criteria1:="<>"
    ' Макрос выделения с адресами до последней заполненной ячейки
    Range("A1", Cells(Rows.Count, 7).End(xlUp)).Select
Selection.Copy
Sheets("Лист3").Select
ActiveSheet.Paste
    Rows("2:2").Select
'фильтр по цвету
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("Лист3").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Лист3").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "C2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Лист3").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A3", Cells(Rows.Count, 7).End(xlUp)).Select
    Selection.Copy
    Sheets("sheet1").Select
    ActiveSheet.Paste
    Rows("3:3").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("sheet1").AutoFilter.Sort.SortFields.Clear
'сортировака по возрастанию
    ActiveWorkbook.Worksheets("sheet1").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "A5"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("sheet1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    'Selection.Delete Shift:=xlUp
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Шаг 3: Выбираем следующую строку вниз
Cells(LastRow, 2).Offset(1, 0).Select
'пишим нужный текст
'ActiveCell.FormulaR1C1 = "Не набивные и шкуры"
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Cells(LastRow, 5).Offset(1, 0).Select
'ActiveCell.FormulaR1C1 = "0"
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Cells(LastRow, 1).Offset(2, 0).Select

    
    'проблемный участов вставки 1.
    Range("I4").Select
    ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-1]"
    Range("i4:i" & Cells(Rows.Count, 1).End(xlDown).Row).Formula = [i4].FormulaR1C1
    Range("B4", Cells(Rows.Count, 9).End(xlUp)).Select
    Range("R4").Select
    ActiveCell.FormulaR1C1 = "=R[1]C[-13]"
    Range("R4").Select
    ActiveCell.FormulaR1C1 = "=R[-2]C[-13]"
    Range("O4:P4").Select
    Sheets("Лист3").Select
    Range("E1").Select
    Selection.Copy
    Sheets("sheet1").Select
    Range("O4:P4").Select
    ActiveSheet.Paste
    Range("O5:P5").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C"
    Range("O6").Select
    Range("U5:V5").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C[-6]"
    Range("U6").Select
    Range("X4").Select
    ActiveCell.FormulaR1C1 = "=RC[-6]"
    Range("X5").Select
    Range("R5").Select
    ActiveCell.FormulaR1C1 = "=MID(R[-1]C[-3],1,FIND(""-"",R[-1]C[-3])-1)"
    Range("R6").Select
    
    Application.DisplayAlerts = False
    Sheets("Лист2").Delete
    Application.DisplayAlerts = True

    Application.DisplayAlerts = False
    Sheets("Лист3").Delete
    Application.DisplayAlerts = True
    
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "Dingdan-1\" & [O4] & Re & ".xlsm" _
        , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    
End Sub

Посоветуйте что делать пожалуйста
Может мой же код, где то образует мину?)) так как после сохранения если открыть файл и очистить в ручную образовавшийся пустые ссылки на ячейки,
в колонке 9. размер файла значительно уменьшается.

но при попытке осуществить это с помощью макросов(ниже приведенной)
Код
    Sheets("sheet1").Select
    
    LastRow = Cells(Rows.Count, 4).End(xlUp).Row
    'Шаг 3: Выбираем следующую строку вниз
    Cells(LastRow, 9).Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Delete

размер сохраняется

на всякий случай прикреплюданный шаблонный файл
Изменено: aybek04 - 23.09.2021 23:53:45
 
вас тут модератор попросил убрать за собой
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=143801&TITLE_SEO=143801-otklyuchenie-avtozapuska-makrosa-iz-knigi-pri-ee-sokhranenii-s-pomoshchyu-koda

P.S. Очистить 9-й столбец можно так
Код
Range("I1:I" & Cells(Rows.Count, "I").End(xlUp).Row).ClearContents
Изменено: New - 24.09.2021 17:42:24
 
не сработал. все еще так же  
 
1. вы не удалили своё цитирование в предыдущей теме по моей ссылке, о чем просил вас модератор
2. а после очистки 9-го столбца вы сохранили файл? Если сохранили файл, то получается дело не в 9-м столбце
3. вам надо учится избавляться от метода Select в ваших кодах

Код
    Range("U6").Select 'зачем это выделение ячейки, если ниже вы выделяете другую?
    Range("X4").Select
зачем поочерёдно выделять одну ячейку, а затем ещё одну? Если вы делаете 5 раз Select, то смысла в четырёх прыдущих вообще нет. Вот смотрите
Код
Range("A1").Select
Range("A2").Select
Range("A3").Select
Range("A4").Select
Range("A5").Value = 5

Какой смысл в выделение ячеек A1... A4 ? И вообще лучше не делать Select
Вместо двух этих строк
Код
    Range("R5").Select
    ActiveCell.FormulaR1C1 = "=MID(R[-1]C[-3],1,FIND(""-"",R[-1]C[-3])-1)"

пишите вот так
Код
    Range("R5").FormulaR1C1 = "=MID(R[-1]C[-3],1,FIND(""-"",R[-1]C[-3])-1)"
Изменено: New - 24.09.2021 22:15:20
 
New, спасибо за совет. буду иметь ввиду)

и еще раз спасибо за помощь
 
погодите, мы ещё не докопались до истины, что с вашим файлом )
я лишь спросил - если очистить ваш 9-й столбец (как вы и хотели) и сохранить файл, то ваш файл сокращается или нет?
может там ещё что-то надо очистить...
ваш код не тестировал, т.к. сразу при открытии вашей книги у меня выскакивает ошибка. Поэтому я отталкиваюсь от ваших слов, а не от вашего файла или кода. Вы написали про очистку 9-го столбца, я вам показал один из возможных вариантов его очистки. Но пока не понял, помогло ли это вам или нет. Если не помогло, давайте дальше будем разбираться
 
New,

Нет. изначально в шаблоне стояла ссылка умножения 3х колонок, но мен нужно было умножить только 2 колонки. почему то в кураже решил макросом умножать эти 2 келонки от начала до конца книги(не много ступил), что и увеличивал размер файла до 9мб
Решил вопрос простым изменением самого файла шаблона. и убрал код создающий ссылку.
Страницы: 1
Наверх