Сохранить вкладку как новый файл без изменений (Excel) - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый день! Помогите с макросом, который будет: 1) Удалять все строки в который есть формула, но нет значений (сейчас код просто скрывает их) 2) Удалять все формулы в листе (он уже написан см. ниже) 3) Сохранить вкладку как новый файл с определенным именем файла "Файл 1" + дата (сейчас при открытии нового файла пишет, что коррупирован и открытие его может быть не безопасно (почему?)). 4) Все это будет происходить без затрагивания исходного файла (будет создаваться временный файл или другим образом)
Листинг программы
  1. Sub DeleteRows()
  2. Set rr = Range("A15:O226")
  3. For Each cell In rr
  4. cell.Select
  5. If cell.HasFormula = True And cell.Value = "" And cell.EntireRow.Hidden = False Then Rows(cell.Row).EntireRow.Hidden = True
  6. Next cell
  7. End Sub
  8. Sub All_Formulas_To_Values_()
  9. ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
  10. End Sub
  11. Sub SaveAsNew()
  12. Dim FileN$
  13. FileN = ThisWorkbook.Path & "" & Date & ".xls"
  14. ThisWorkbook.Sheets(5).Copy
  15. ActiveWorkbook.SaveCopyAs FileN
  16. ActiveWorkbook.Close SaveChanges:=False
  17. MsgBox "Worksheet is saved as new file " & FileN
  18. End Sub
  19. Sub AllOperations()
  20. Call DeleteRows
  21. Call All_Formulas_To_Values_
  22. Call SaveAsNew
  23. End Sub

Решение задачи: «Сохранить вкладку как новый файл без изменений (Excel)»

textual
Листинг программы
  1. Private Sub Testv2() 'Для примера Book2.xlsm
  2.    Dim iFileName$, iRow&
  3.     iFileName = ThisWorkbook.Path & "\Файл1_" & Date & ".xls"
  4.  
  5.     Application.ScreenUpdating = False
  6.     Application.DisplayAlerts = False
  7.     Application.Calculation = xlManual
  8.    
  9.     ThisWorkbook.Sheets(2).Copy
  10.     With ActiveWorkbook.ActiveSheet
  11.          .Buttons.Delete '.Shapes("Button 1").Delete
  12.         .UsedRange.Value = .UsedRange.Value
  13.          For iRow = .Cells(.Rows.Count, 2).End(xlUp).Row To 5 Step -1
  14.              If Application.CountA(.Rows(iRow)) = 1 Then .Rows(iRow).Delete
  15.          Next
  16.          .SaveAs iFileName, xlExcel8: .Parent.Close
  17.     End With
  18.    
  19.     Application.Calculation = xlAutomatic
  20.     Application.DisplayAlerts = True
  21.     Application.ScreenUpdating = True
  22. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы