Как удалить файлы excel
Предположим, что ежедневно во временную папку поступают файлы отчетов от филиалов. Они могут собираться из почты кодом вроде такого: Сохранить вложения из Outlook в указанную папку или добавляться в папку иными средствами. Далее Вы собираете данные из этих файлов неким кодом(вроде этого - Как собрать данные с нескольких листов или книг?). Но с каждым днем файлов все больше и больше и приходится заходить в папку и руками чистить её от лишних файлов, чтобы при сборе данных не приходилось каждый раз искать и отбирать только новые файлы.
Если надо удалять только конкретные файлы(например только файлы Excel, содержащие в имени слово "отчет"), то можно использовать такой код:
Чтобы удалять полностью все файлы в папке(а не только файлы Excel), а саму папку оставить, то строку sFiles = Dir(sFolder & "*отчет*.xls*") надо записать так: sFiles = Dir(sFolder & "*")
Если необходимо удалять файлы по дате создания/изменения(например, только файлы, созданные раньше 01.03.2017), то можно использовать такой код:
Если необходимо всегда удалять файлы, дата создания которых раньше текущей, то строку dKill = CDate("01.03.2017") нужно заменить на такую: dKill = Date . Если удалить надо файлы недельной давности, то: dKill = Date-7
Если же необходимо удалить папку полностью, а не только файлы в ней, то лучше использовать такой код:
Sub RemoveFolderWithContent() Dim sFolder As String, sFiles As String 'диалог запроса выбора папки на удаление With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub sFolder = .SelectedItems(1) End With sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator) 'путь к папке можно задать статично, если он заранее известен и не изменяется ' sFolder = "C:\temp\Ежедневные отчеты\10072017" 'путь к папке, которую надо удалить Shell "cmd /c rd /S/Q """ & sFolder & """" End Sub
Этот код удалить папку вместе со всеми файлами буквально за секунду.
Вообще в VBA есть специальная команда для удаления директорий(папок) RmDir . Но она способна удалить только пустую папку, поэтому редко когда можно найти её практическое применение. Если в файле есть хоть один файл то команда RmDir выдаст ошибку '75' - File/Path access error .
Ниже приведены пошаговые инструкции по удалению продуктов Office с ПК (ноутбука, настольного компьютера или трансформера 2-в-1). Если вы хотите удалить Office с компьютера Mac, см. статью Удаление Office для Mac.
Совет: При удалении Office с компьютера удаляются только приложения Office, при этом файлы, документы и книги, созданные с помощью этих приложений, остаются.
Удаление Office для вашего типа установки
Действия по удалению Office зависят от вашего типа установки. Наиболее распространенные типы установки: по технологии "нажми и работай" и с помощью установщика Microsoft Windows (MSI). Другой тип — это установка Office из приложения Microsoft Store.
Выберите ниже вкладку Технология "нажми и работай" или MSI или Microsoft Store и следуйте инструкциям по удалению для вашего типа установки.
Не знаете, какой у вас тип установки?
Разверните этот раздел, если не знаете, какой у вас тип установкиОткройте приложение Office, чтобы проверить тип установки
Примечание: Если не удается открыть приложение для проверки типа установки, сначала попробуйте выполнить действия по удалению распространенного типа установки "нажми и работай" или MSI.
Создайте или откройте существующий файл и выберите Файл > Учетная запись (этот элемент также может называться Учетная запись Office).
В разделе сведений о продукте найдите кнопку О программе и проверьте наличие следующих элементов:
Технология "нажми и работай"
Для установок по технологии "нажми и работай" указана версия и номер сборки, а также фраза нажми и работай.
Следуйте приведенным ниже инструкциям для технологии "нажми и работай" или MSI.
Установки MSI не содержат версии и номера сборки.
Следуйте приведенным ниже инструкциям для технологии "нажми и работай" или MSI.
Microsoft Store
Для установок из Microsoft Store указана версия и номер сборки, а также фраза Microsoft Store.
Если вы используете этот тип установки, выберите вкладку Microsoft Store.
Если вы использовали установку типа "нажми и работай" или MSI, удалите Office через панель управления или скачайте средство поддержки удаления.
Откройте панель управления.
Совет: Если вы устанавливали приложения Office как часть набора, например Office для дома и учебы или Microsoft 365, найдите имя этого набора. Чтобы найти отдельное приложение, выполните поиск по его имени, например Project или Visio.
В большинстве случаев нельзя удалить отдельное приложение, если оно включено в набор приложений Office. Приложения можно удалять по отдельности, только если они были приобретены не в наборе.
Способ открытия панели управления зависит от версии Windows.
В поле поиска на панели задач введите панель управления, а затем выберите Панель управления.
Выберите раздел Программы, а затем — Программы и компоненты, щелкните правой кнопкой мыши нужный продукт Microsoft Office и выберите команду Удалить.
Windows 8.1 или 8
Щелкните правой кнопкой мыши кнопку Пуск (в левом нижнем углу) и выберите команду Панель управления.
Выберите пункт Программы и компоненты, щелкните правой кнопкой мыши нужный продукт Office и выберите команду Удалить.
В категории Программы выберите пункт Программы и компоненты.
Щелкните правой кнопкой мыши приложение Office, которое нужно удалить, и выберите команду Удалить.
Следуйте указаниям, чтобы завершить удаление.
Примечание: Если Office не указан в панели управления, возможно, вы использовали установку из Microsoft Store. Вместо этого выберите вкладку Microsoft Store выше и следуйте указанным в ней инструкциям по удалению.
Выберите версию Office, которую вы хотите переустановить, и выполните указанные ниже действия.
Вариант 2. Полное удаление Office с помощью средства поддержки удаленияВыберите кнопку ниже для скачивания средства поддержки удаления Office.
Выполните действия, чтобы открыть загрузку в зависимости от браузера. Когда вам будет предложено в окне установки приложения, выберите Установить, а затем Я соглашаюсь для соглашения об использовании служб Майкрософт.
Совет: Скачивание и установка средства может занять несколько минут. По завершении установки откроется окно удаления продуктов Office.
Edge или Chrome
В левом нижнем углу щелкните правой кнопкой мыши SetupProd_OffScrub.exe и выберите пункт Открыть.
Microsoft Edge (старый)
В нижней части окна браузера нажмите кнопку Выполнить, чтобы запустить файл SetupProd_OffScrub.exe.
Во всплывающем окне нажмите Сохранить файл, а затем в правом верхнем углу окна браузера выберите стрелку скачивания > SetupProd_OffScrub.exe.
В окне "Удалить продукты Office" выберите версию Office, которую нужно удалить, а затем выберите Далее.
Следуйте указаниям и при появлении запроса перезагрузите компьютер.
После перезагрузки компьютера средство удаления автоматически откроется для завершения последнего этапа процесса удаления. Следуйте остальным указаниям.
Если вы хотите переустановить Office, выберите и выполните инструкцию для нужной версии. Закройте средство удаления.
Совет: Если средство удаления Office не полностью удаляет Office с компьютера, можно попытаться удалить Office вручную.
Удаление Office из раздела параметров Windows 10
Выберите Пуск > Параметры > Приложения.
В разделе Приложения и компоненты выберите версию Office, которую нужно удалить.
Совет: Если не удается удалить установку Microsoft Store с помощью раздела Параметры в Windows 10, попробуйте удалить Office вручную с помощью Windows PowerShell, следуя инструкциям ниже.
Удаление Office вручную с помощью Windows PowerShell
Удаление Office
Щелкните правой кнопкой мыши кнопку Пуск и выберите Windows PowerShell(администратор).
В окне Windows PowerShell введите следующее:
Get-AppxPackage -name “Microsoft.Office.Desktop” | Remove-AppxPackage
Нажмите клавишу ВВОД.
Это займет несколько минут. После завершения появится новая командная строка.
Проверьте удаление Office
В окне Windows PowerShell введите следующее:
Get-AppxPackage -name “Microsoft.Office.Desktop”
Нажмите клавишу ВВОД.
Если отображается только командная строка без дополнительных сведений, то Office успешно удален и окно Windows PowerShell можно закрыть.
Переустановка Office
Примечание: Если не знаете, какая у вас операционная версия, см. статью Какая у меня версия операционной системы Windows?.
Создание новых рабочих листов осуществляется с помощью метода Sheets.Add.
Синтаксис метода Sheets.Add
expression.Add [Before, After, Count, Type]
где expression — переменная, представляющая собой объект Sheet.
Компоненты метода Sheets.Add
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлен новый.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлен новый.
- Count — необязательный параметр типа данных Variant, указывающий, сколько листов будет добавлено (по умолчанию — 1).
- Type — необязательный параметр типа данных Variant, указывающий тип листа: xlWorksheet** (рабочий лист) или xlChart (диаграмма), по умолчанию — xlWorksheet.
*Если Before и After не указаны, новый лист, по умолчанию, будет добавлен перед активным листом.
**Для создания рабочего листа (xlWorksheet) можно использовать метод Worksheets.Add, который для создания диаграмм уже не подойдет.
Примеры создания листов
ThisWorkbook . Sheets . Add After : = ActiveSheet , Count : = 2 Workbooks ( "Книга1.xlsm" ) . Sheets . Add After : = Лист 1 Workbooks ( "Книга1.xlsm" ) . Sheets . Add After : = Worksheets ( 1 ) Workbooks ( "Книга1.xlsm" ) . Sheets . Add After : = Worksheets ( "Лист1" ) Workbooks ( "Книга1.xlsm" ) . Sheets . Add . Name = "Мой новый лист" Sheets . Add Before : = Worksheets ( Worksheets . Count )- Лист1 в After:=Лист1 — это уникальное имя листа, указанное в проводнике редактора VBA без скобок.
- Лист1 в After:=Worksheets(«Лист1») — это имя на ярлыке листа, указанное в проводнике редактора VBA в скобках.
Создаваемый лист можно присвоить объектной переменной:
Set myList = Workbooks ( "Книга1.xlsm" ) . Worksheets . AddЕсли создаваемый лист присваивается объектной переменной, он будет помещен перед активным листом. Указать дополнительные параметры невозможно.
Копирование листов
Копирование рабочих листов осуществляется с помощью метода Worksheet.Copy.
Синтаксис метода Worksheet.Copy
expression.Copy [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Copy
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлена копия.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлена копия.
*Если Before и After не указаны, Excel создаст новую книгу и поместит копию листа в нее. Если скопированный лист содержит код в проекте VBA (в модуле листа), он тоже будет перенесен в новую книгу.
Примеры копирования листов
Worksheets ( "Лист1" ) . Copy Before : = Worksheets ( "Лист2" ) Workbooks ( "Книга1.xlsm" ) . Worksheets ( "Лист1" ) . Copy _Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листов
Перемещение рабочих листов осуществляется с помощью метода Worksheet.Move.
Синтаксис метода Worksheet.Move
expression.Move [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Move
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет размещен перемещаемый лист.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет размещен перемещаемый лист.
*Если Before и After не указаны, Excel создаст новую книгу и переместит лист в нее.
Примеры перемещения листов
Простые примеры перемещения листов:
Worksheets ( "Лист1" ) . Move Before : = Worksheets ( "Лист2" ) Workbooks ( "Книга1.xlsm" ) . Worksheets ( "Лист1" ) . Move _Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листа «Лист4» в позицию перед листом, указанным как по порядковому номеру, так и по имени ярлыка:
x = InputBox ( "Введите имя или номер листа" , "Перемещение листа «Лист4»" )Удаление листов
Удаление рабочих листов осуществляется с помощью метода Worksheet.Delete
Синтаксис метода Worksheet.Delete
где expression — переменная, представляющая собой объект Worksheet.
Примеры удаления листов
Workbooks ( "Книга1.xlsm" ) . Worksheets ( "Лист1" ) . DeleteЕсли рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Как обратиться к рабочему листу, переименовать, скрыть или отобразить его с помощью кода VBA Excel, смотрите в этой статье.
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.48 комментариев для “VBA Excel. Рабочий лист (создание, копирование, удаление)”
А как удалить листы не указывая постоянно их название?:
Если по крупному
нет Проверки наличия Листа в книге
нет Переименования Листа
Добрый день, Эдуард!
Я правильно понял вопрос: нужно, чтобы макрос при каждом запуске создавал копию листа и присваивал ему новое имя, отличное от имени по умолчанию? Если так, то по каким правилам должно создаваться новое имя?
Здравствуйте. Не могу найти макрос может кто поможет.
Задача состоит в том что бы макрос читал все листы книги после чего делал копию этих листов и вставлял в эти же листы данные как значения. Т.е. фактически разрывал связи методом копи паст но на всех листах книги (колличество листов в книге может быть каждый раз разное.
Добрый день!
У меня вопрос.
Как перемещать лист перед другим листом, номер или название которого будет вводить пользователь?
Привет, Артур!
Перемещение листа «Лист2» на позицию перед листом, имя ярлыка которого вводится в текстовое поле информационного окна InputBox:
Спасибо!
У меня ещё вопрос. А если указывать номер листа, перед которым будет другой лист, какое изменение будет в коде?
А так можно вводить и номер, и имя:
x = InputBox ( "Введите имя или номер листа" , "Перемещение листа «Лист2»" ) x = InputBox ( "Введите имя или номер листа" , "Перемещение листа «Лист2»" )Добрый день! Возможно ли полное копирование листа на нужный мне лист? В январе заполняются данные каждый день и надо чтобы за каждый день создавалась копия на заранее созданные 31 лист по дням?
. PasteSpecial Paste : = xlPasteFormulasAndNumberFormatsДобрый день, Эдуард!
Это можно сделать двумя строками, но перед копированием следует проверить, не был ли исходный лист сегодня уже сохранен под новым именем:
Спасибо за помощь! Нашел другое решение более мне подходящее но не знаю как сделать чтобы созданые листы вставлялись по порядку нумерации 1,2,3 и т.д. после активного листа? Не поможете вот код
destSht . Move After : = Worksheets ( Worksheets . Count )Спасибо все работает!
Еще вопрос, можно ли скопировать лист не в конец книги а между листами, есть 12 месяцев в книге ексель чтобы копировалось после января, февраля?
И может еще чтобы кнопка с макросом не копировалась а создавалась гипперссылка обратно на лист?
Sheets . Add . Name = InputBox ( "Ввести дату - від 1 до 31" ) destSht . Move After : = Worksheets ( Worksheets . Count )Я добавил код перемещения нового листа относительно исходного листа с именем текущего месяца и удаления ненужного нового листа, который создается при повторном вводе одного и того же числа:
Sheets . Add . Name = InputBox ( "Ввести дату - від 1 до 31" ) destSht . Move After : = Worksheets ( CStr ( CByte ( destSht . Name ) - 1 ) )Евгений огромное спасибо это то что и требовалось весьма признателен за Вашу помощь.
Эдуард, представленный выше код будет работать только с одним месяцем. Excel не даст создать в одной книге несколько листов с одним именем (одно и то же число, но разных месяцев). Вам придется как-то изменить наименование листов, например: 1.01-31.01, 1.02-28.02. Тогда для перемещения новых листов придется использовать другой алгоритм или по окончании одного месяца, все его листы переименовать, например так:
MsgBox "Такой номер уже используется - введите другой"Я понял этого и не требуется по окончанию месяца листы будут сохранены отдельно.
А вот по предедущему коду нельзя ввести произвольное число т.е не по порядку 1,2,3 а сразу например 17 пропустив с 1 по 16?
Помогите с мелочью никак не пойму куда вставить умножить на 2,1 и на 1,9 чтобы не считалось +_ 20% в этой формуле?
=ДВССЫЛ(АДРЕС(СТРОКА();СТОЛБЕЦ()-1;1;1))
Эдуард, может быть у вас для ячейки с формулой установлен формат «Процентный»?
Нет числовой. условное форматирование со стрелками вверх вниз и вправо
=ДВССЫЛ(АДРЕС(СТРОКА();СТОЛБЕЦ()-1;1;1*2,6)) для стрелки вверх
=ДВССЫЛ(АДРЕС(СТРОКА();СТОЛБЕЦ()-1;1;1*2,4)) для стрелки вправо
но не работает может я не туда вставляю *2,6
Синтаксис функции АДРЕС:
АДРЕС(номер_строки;номер_столбца;[тип_ссылки];[A1];[имя_листа])
Там, где вы умножаете, должно быть логическое значение [A1]: ИСТИНА или ЛОЖЬ (1 или 0).
удаляю Лист по имени на ярлычке
Евгений, помогите пожалуйста со следующей задачей.
В папке несколько документов эксель, в каждом из которых несколько листов.
Необходимо, чтобы макрос открывал по порядку каждый документ, проходил по каждому листу и брал оттуда нужную информацию. Затем эта информация переносится в новый документ эксель в заданном порядке.
В целом программу я реализовал, но столкнулся с проблемой, что debug упирается в последний лист первого открытого документа и не может дальше перейти к следующему документу. Т.е. необходимо прописать условие, чтобы vba понимал, что данный лист в документе последний.
Подскажите пожалуйста, как это сделать?
Цикл будет завершен после обработки последнего листа.
Здравствуйте!
Возможно ли при копировании листа из другого файла перенести и пользовательский стиль таблицы?
Добрый день!
Если не ошибаюсь, пользовательский стиль таблицы всегда копируется вместе с листом, но внешний вид таблиц будет одинаков, если оба файла созданы и открыты в одной версии Excel.
Спасибо за ответ.
Увы, не так, и даже всё не так.
Стиль «пытается» копироваться, цвета отличаются оттенками, но это полбеды. Главное, что нужно мне, чтобы копировался цвет шрифта таблицы, а этого не происходит. Почему-то на листе-цели устанавливается на весь лист чёрный шрифт, который Эксель считает главнее табличного.
И даже больше. После ручной замены на всё листе-цели шрифта с чёрного на авто замены цвета шрифта в импортированной таблице не происходит. Что всегда есть при ручной работе с таблицами.
Ну, и совсем глюк. Пользовательский стиль переезжает и доступен в новой книге. Но даже при ручном его выборе на листе-цели для таблицы не происходит смены цвета шрифта.
Цвет можно поменять только руками (макросом) без учёта таблицы.
Всё это происходит на одном компьютере в одной ОС В10.
Хм. Эксель 2016, всё выше описанное по-прежнему.
Если не затруднит, скопируйте умную таблицу макросом на новый лист, перед этим созданный тем же макросом.
Ответ однозначный - да. Для этого в языке VBA есть специальный оператор - kill. Для нас он и представляет определённый интерес.
Давайте посмотрим как его можно использовать. Имеется папка (в моём примере это C:\Для всех), её нужно очистить от файлов с расширением *.xlsx.
Создадим новую книгу и, как обычно, добавим в неё стандартный модуль. Мы рассматривали этот алгоритм в предыдущих статьях.
- вкладка «Разработчик», кнопка «Visual basic»;
- вставляем новый модуль и помещаем следующий код макроса.
Sub DF()
' Удаление всех файлов из папки с расширением .xlsx
Kill "C:\Для всех\" & "*.xlsx"
End Sub
Будьте внимательны - макрос не удаляет файлы в "Корзину", а полностью стирает их с жёсткого диска компьютера!
Аналогично сочетанию клавиш Shift+Delete.
Проверим работоспособность нашего кода. Запустим окно выбора макросов комбинацией клавиш Alt+F8 и нажмём "Выполнить".
Результат на лицо - в папке остался только один файл "Изменение листа.xlsm" потому что у него разрешение не совпадает с указанным в макросе.
Также хочется отметить, что привычное сочетание клавиш Ctrl+Z не поможет восстановить файлы.
Необходимая оговорка - макрос можно использовать для всех типов файлов. Для этого необходимо изменить в макросе расширение *.xlsx на нужное для удаления вам.
Читайте также: