Excel макрос удалить файл если

Удаление любых файлов из кода VBA Excel с помощью оператора Kill и метода DeleteFile объекта FileSystemObject. Знаки подстановки, синтаксис, примеры.

Оператор Kill

Описание

Kill – это оператор, предназначенный для удаления файлов с диска.

Синтаксис

  • PathName – это строковое выражение, задающее одно или несколько имен файлов (по шаблону), которые требуется удалить.

Строка PathName может содержать каталоги (папки) и букву диска. Если файл с именем PathName не существует, будет сгенерирована ошибка.

Оператор Kill поддерживает использование знаков подстановки в последнем компоненте параметра PathName (собственное имя файла без пути к нему):

  • Звездочка (*) – заменяет любое количество символов или ни одного.
  • Вопросительный знак (?) – заменяет один символ или ни одного.

Знаки подстановки позволяют создать шаблон, по которому можно удалить сразу несколько файлов.

Примеры

Пример 1
Удаление одного файла без проверки его существования (в примере — удаление книги Excel):

Sub Primer1()

  On Error Resume Next

  Kill ThisWorkbook.Path & «Книга1.xlsx»

End Sub

Инструкция On Error Resume Next нужна для того, чтобы корректно завершить программу в том случае, если файла с именем PathName не существует.

Пример 2
Удаление одного файла с проверкой его существования:

Sub Primer2()

Dim myPathName As String

  myPathName = «C:Новая папкаФайл1.docx»

  If Dir(myPathName) <> «» Then Kill myPathName

End Sub

Пример 3
Удаление нескольких файлов по шаблону:

Sub Primer3()

  On Error Resume Next

  Kill «C:Новая папкаСправка*»

End Sub

В результате работы этого кода VBA Excel будут удалены все файлы с любыми расширениями, которые начинаются со слова «Справка». Если строку Kill "C:Новая папкаСправка*" заменить строкой Kill "C:Новая папка*2020*", она удалит все файлы, в имени которых есть подстрока «2020».

Как удалить объект ThisWorkbook с помощью оператора Kill из кода VBA Excel, размещенного в нем же, смотрите в статье: Удаление книги из собственного кода.

Метод DeleteFile

Описание

DeleteFile – это метод объекта FileSystemObject, предназначенный для удаления файлов с диска из кода VBA Excel.

Синтаксис

Object.DeleteFile PathName, [force]

  • Object – переменная, возвращающая объект FileSystemObject (обязательный параметр);
  • PathName – строковое выражение, задающее одно или несколько имен файлов (по шаблону), которые требуется удалить (обязательный параметр);
  • force – значение типа Boolean: True – удаляются все файлы, False (по умолчанию) – не удаляются файлы с атрибутом «только для чтения» (необязательный параметр).

В последнем компоненте параметра PathName (собственное имя файла без пути к нему) можно использовать знаки подстановки, также, как и для оператора Kill. Если указанный файл не существует, будет сгенерирована ошибка.

Примеры

Пример 4
Удаление одного файла с проверкой его существования:

Sub Primer4()

Dim fso As Object

‘Присваиваем переменной fso ссылку на новый экземпляр FileSystemObject

Set fso = CreateObject(«Scripting.FileSystemObject»)

‘Проверяем существование удаляемого файла

  If Dir(ThisWorkbook.Path & «Изображение.png») <> «» Then

    ‘Удаляем файл, если он существует

    fso.DeleteFile ThisWorkbook.Path & «Изображение.png»

  End If

End Sub

Пример 5
Удаление нескольких или всех файлов по шаблону:

Sub Primer5()

Dim fso As Object

‘Присваиваем переменной fso ссылку на новый экземпляр FileSystemObject

Set fso = CreateObject(«Scripting.FileSystemObject»)

‘Завершаем программу, если не существует ни одного файла, подходящего под указанный шаблон

On Error Resume Next

‘Удаляем указанный файл (файлы)

fso.DeleteFile «C:Новая папка*.docx»

End Sub

В результате работы этого кода VBA Excel из папки «Новая папка» будут удалены все файлы с расширением .docx.


Фразы для контекстного поиска: удаление файла, удаление всех файлов, удаление нескольких книг, удаление всех книг, удаление по шаблону.


Содержание

  1. Как удалить папку или все файлы из папки через VBA
  2. Как удалить макросы из книги Excel (3 простых способа)
  3. Удалите все макросы, сохранив файл в формате XLSX
  4. Удалить определенные макросы из диалогового окна «Макрос»
  5. Удалите модуль с макросом
  6. Excel макрос удалить файл если
  7. VBA Удалить файл — Как удалить файл с помощью VBA (с примерами)
  8. Введение в VBA Удалить файл
  9. Синтаксис удаления файла в Excel VBA
  10. Как удалить файл с помощью VBA?
  11. Пример № 1 — VBA Удалить файл
  12. Пример № 2 — VBA Удалить файл
  13. То, что нужно запомнить
  14. Рекомендуемые статьи

Как удалить папку или все файлы из папки через VBA

Предположим, что ежедневно во временную папку поступают файлы отчетов от филиалов. Они могут собираться из почты кодом вроде такого: Сохранить вложения из Outlook в указанную папку или добавляться в папку иными средствами. Далее Вы собираете данные из этих файлов неким кодом(вроде этого — Как собрать данные с нескольких листов или книг?). Но с каждым днем файлов все больше и больше и приходится заходить в папку и руками чистить её от лишних файлов, чтобы при сборе данных не приходилось каждый раз искать и отбирать только новые файлы.
Если надо удалять только конкретные файлы(например только файлы Excel, содержащие в имени слово «отчет»), то можно использовать такой код:

Sub Remove_AllFilesFromFolder() Dim sFolder As String, sFiles As String ‘диалог запроса выбора папки с файлами ‘подробнее про диалоги выбора папки или файла: ‘ http://www.excel-vba.ru/chto-umeet-excel/dialogovoe-okno-vybora-fajlovpapki/ 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) ‘отбирать только файлы Excel, содержащие в имени слово «отчет» sFiles = Dir(sFolder & «*отчет*.xls*») ‘цикл по всем файлам в папке On Error Resume Next Do While sFiles <> «» ‘удаляем файл Kill sFolder & sFiles If Err.Number = 70 Then MsgBox «Невозможно удалить файл ‘» & sFiles & «‘. Возможно файл открыт в другой программе или нет прав на удаление», vbCritical, «www.excel-vba.ru» Err.Clear End If ‘на всякий случай передаем управление системе, ‘чтобы дождаться удаления DoEvents ‘получаем имя следующего файла в папке sFiles = Dir Loop End Sub

Чтобы удалять полностью все файлы в папке(а не только файлы Excel), а саму папку оставить, то строку sFiles = Dir(sFolder & «*отчет*.xls*») надо записать так: sFiles = Dir(sFolder & «*»)

Если необходимо удалять файлы по дате создания/изменения(например, только файлы, созданные раньше 01.03.2017), то можно использовать такой код:

Sub Remove_FilesFromFolder_AfterDate() Dim sFolder As String, sFiles As String Dim dd As Date, dKill As Date ‘задаем дату. Если файл был создан/изменен до этой даты — он будет удален dKill = CDate(«01.03.2017») ‘можно задать проще: dKill = #3/1/2017# ‘диалог запроса выбора папки с файлами ‘подробнее про диалоги выбора папки или файла: ‘ http://www.excel-vba.ru/chto-umeet-excel/dialogovoe-okno-vybora-fajlovpapki/ 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) sFiles = Dir(sFolder & «*») ‘цикл по всем файлам в папке On Error Resume Next Do While sFiles <> «» ‘получаем дату создания или изменения файла dd = FileDateTime(sFolder & sFiles) ‘если дата файла меньше заданной для удаления(был создан раньше) If dd 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 .

Статья помогла? Поделись ссылкой с друзьями!

Источник

Как удалить макросы из книги Excel (3 простых способа)

Использование макросов VBA в Excel может значительно сэкономить время. Вы можете автоматизировать множество повторяющихся задач и создавать новые функции и возможности в Excel с помощью простых кодов макросов VBA.

Но в некоторых случаях вам может потребоваться удалить все макросы из книги Excel (или удалить только определенные макросы).

Это может быть в том случае, если вы получаете книгу от кого-то другого и хотите освободить ее от макросов, или когда вы отправляете кому-то файл с макросами, а квитанция не нуждается в них в книге.

В этом уроке я покажу вам несколько действительно простых способов удалить макросы из книги в Microsoft Excel.

Удалите все макросы, сохранив файл в формате XLSX

Если вы хотите избавиться от всех макросов сразу, самый простой способ сделать это — сохранить существующую книгу в формате XLSX.

По умолчанию у вас не может быть кода макроса VBA в формате файла XLSX. Если вы это сделаете, он будет автоматически удален при сохранении файла Excel.

В Excel вы можете использовать макросы только в форматах .XLSM, .XLSB и более старых форматах .XLS. Когда вы сохраняете книгу в любом другом формате, макросы сразу теряются.

Предположим, у вас есть файл с именем Example.xlsm (с макросами), ниже приведены шаги по удалению всех макросов из этого файла:

  1. Перейдите на вкладку Файл.
  2. Нажмите на опцию «Сохранить как» (в новых версиях Excel это «Сохранить копию»).
  3. Щелкните Обзор. Откроется диалоговое окно «Сохранить как».
  4. В диалоговом окне «Сохранить как» введите имя файла, с которым вы хотите его сохранить. Вы также можете сохранить существующее имя, если хотите
  5. Щелкните раскрывающийся список Тип файла.
  6. Выберите вариант «Книга Excel (* .xlsx)».
  7. Нажмите на Сохранить
  8. В появившемся запросе нажмите Да. Он просто информирует вас о том, что код VB будет утерян, если вы сохраните этот файл в формате .XLSX.

Вот и все! Теперь ваш файл не содержит макросов.

Этот метод удобен тем, что удаляет все макросы из текущей книги Excel за один раз. Однако, если вы хотите удалить некоторые макросы и удалить некоторые, этот метод не сработает для вас (см. Тот, который использует диалоговое окно «Макрос» для этого).

Еще одна хорошая особенность этого метода заключается в том, что у вас все еще есть копия исходного файла со всеми макросами (на случай, если она вам понадобится в будущем).

Удалить определенные макросы из диалогового окна «Макрос»

Хотя предыдущий метод удалял все макросы. это позволяет вам выбрать те, которые вы хотите удалить.

И если вы хотите удалить все макросы, вы также можете это сделать.

Предположим, у вас есть файл с именем Example.xlsm, в котором есть несколько макросов.

Ниже приведены шаги по удалению макроса из этой книги:

  1. Перейдите на вкладку Разработчик (если вы не видите вкладку Разработчик, обратите внимание на примечание желтого цвета после шагов)
  2. Щелкните по кнопке Macros. Откроется диалоговое окно «Макрос», в котором вы увидите все макросы в книге.
  3. Убедитесь, что в раскрывающемся списке «Макросы в» выбрана «Эта книга».
  4. Выберите имя макроса, который вы хотите удалить, из списка макросов.
  5. Щелкните по кнопке Удалить. Это удалит выбранный макрос

Если вы хотите удалить несколько (или все) макросов, повторите шаги 4 и 5.

Примечание. Если вы не видите вкладку разработчика, нажмите здесь, чтобы узнать, как отобразить вкладку разработчика на ленте в Excel. Кроме того, вы также можете использовать сочетание клавиш — ALT + 8, чтобы открыть диалоговое окно «Макрос».

Кроме того, вы также можете щелкнуть вкладку «Представления», щелкнуть раскрывающийся список «Макросы» и затем выбрать опцию «Просмотр макросов». Это также откроет диалоговое окно Macros.

Хотя этот метод отлично работает, он позволяет удалять только макросы, которые хранятся в модуле редактора Visual Basic. Если у вас есть макросы событий (в определенных листах или ThisWorkbook) или макросы в личной книге макросов, их нельзя удалить с помощью этого метода.

Удалите модуль с макросом

Другой способ удалить макросы — перейти в редактор Visual Basic и удалить оттуда макросы.

Этот метод дает вам наибольший контроль, поскольку вы можете получить доступ ко всем макросам (будь то в модуле, объектах или личной книге макросов).

Ниже приведены шаги по удалению макроса из редактора Visual Basic:

  1. Щелкните вкладку Разработчик на ленте.
  2. Нажмите на опцию Visual Basic (или воспользуйтесь сочетанием клавиш — ALT + F11)
  3. В редакторе VB у вас будут все объекты книги в Project Explorer. Если вы не видите Project Explorer, выберите опцию View в меню, а затем нажмите Project Explorer.
  4. В Project Explorer дважды щелкните объект с кодом макроса. Это может быть модуль, объект рабочего листа или ThisWorkbook.
  5. В открывшемся окне кода удалите макросы, которые хотите удалить. Если вы хотите удалить все, просто выберите все и нажмите клавишу удаления.

Если у вас есть модуль, который имеет код, который вы хотите удалить, вы можете щелкнуть правой кнопкой мыши объект модуля, а затем выбрать опцию «Удалить модуль».

Итак, это три способа удаления макросов из книги Microsoft Excel.

Источник

Excel макрос удалить файл если

Комрады. Добрый день. Сильно не бейте, но нет времени искать совершенно.
Задача такая. Есть файл Excel с данными. Его периодически отсылаем в другой офис с обновлённой информацией в качестве отчёта.
Хотелось бы чтобы иные сотрудники не воспользовались файлом и не переслали конкурентам или сами воспользовались инфой.
Т.е. скажем. Мы отослали файл. Они его посмотрели-обсудили. И на следующий день или через два дня он изчез!

Комрады. Добрый день. Сильно не бейте, но нет времени искать совершенно.
Задача такая. Есть файл Excel с данными. Его периодически отсылаем в другой офис с обновлённой информацией в качестве отчёта.
Хотелось бы чтобы иные сотрудники не воспользовались файлом и не переслали конкурентам или сами воспользовались инфой.
Т.е. скажем. Мы отослали файл. Они его посмотрели-обсудили. И на следующий день или через два дня он изчез!

Сообщение Комрады. Добрый день. Сильно не бейте, но нет времени искать совершенно.
Задача такая. Есть файл Excel с данными. Его периодически отсылаем в другой офис с обновлённой информацией в качестве отчёта.
Хотелось бы чтобы иные сотрудники не воспользовались файлом и не переслали конкурентам или сами воспользовались инфой.
Т.е. скажем. Мы отослали файл. Они его посмотрели-обсудили. И на следующий день или через два дня он изчез!

Реально ли? Автор — gallant
Дата добавления — 08.10.2014 в 10:42

Источник

VBA Удалить файл — Как удалить файл с помощью VBA (с примерами)

Введение в VBA Удалить файл

Иногда, когда мы работаем в VBA, мы создаем некоторые нежелательные файлы, или у нас есть некоторые нежелательные файлы на нашем компьютере. Как мы от них избавимся? Мы можем просто пойти и удалить каждый файл вручную, найдя файл и щелкнув по нему правой кнопкой мыши, затем мы нажимаем кнопку удаления, чтобы удалить файл. Или мы можем нажать кнопку удаления на клавиатуре, чтобы удалить файл. Но как мы сделаем это в VBA, мы узнаем из этой статьи.

Итак, теперь мы поняли концепцию этой темы, что нам нужно удалить файл с помощью макросов VBA. В VBA у нас есть команда kill, которая используется для удаления файла из его местоположения. Когда мы просто удаляем файл, пройдя через процесс поиска файла и щелкнув правой кнопкой мыши по нему, чтобы удалить или даже нажать кнопку удаления, файл отправляется в корзину. Но когда мы используем команду Kill в VBA для удаления файла, файл навсегда удаляется с компьютера. Это не идет в корзину. Теперь давайте посмотрим на синтаксис, который мы будем использовать для удаления файла с использованием VBA. Это выглядит следующим образом:

Синтаксис удаления файла в Excel VBA

Всегда помните, что путь к файлу должен быть в кавычках. Теперь, чтобы удалить файл в VBA, мы должны иметь его путь. Как мы получаем путь к файлу? Нам нужно щелкнуть правой кнопкой мыши по файлу и выбрать свойства, которые дают нам различные варианты свойств файла, как только мы нажмем на вкладку безопасности, которая является вторым номером на вкладках, где мы можем найти путь под именем объекта. Взгляните на скриншот ниже для справки.

Путь, указанный после имени объекта, является аргументом, который нам нужно указать для функции killfile, чтобы удалить любой файл. Теперь давайте начнем удалять файлы, посмотрев на несколько примеров ниже.

Прежде чем перейти к примерам, всегда убедитесь, что у нас включена вкладка разработчика для использования макросов. Это делается путем перехода в раздел файлов, а затем в раздел параметров. Мы найдем флажок, который нужно установить, чтобы включить вкладку разработчика. Теперь давайте перейдем к примерам. Например, у меня есть два файла с именем sample 1 и sample 2. Оба являются текстовыми файлами и находятся на рабочем столе. Посмотрите на них ниже.

Как удалить файл с помощью VBA?

Давайте посмотрим примеры удаления файла в Excel VBA.

Вы можете скачать этот VBA Удалить файл Excel шаблоны здесь — VBA Удалить файл Excel шаблоны

Пример № 1 — VBA Удалить файл

Давайте сначала удалим файл образца 1 в этом примере. Оба примера будут иметь разницу в одну минуту, которую я объясню в конце темы. Во-первых, нам нужно получить путь к файлу примера 1. Чтобы сделать это, щелкните правой кнопкой мыши на файле и перейдите в раздел «Свойства», и мы найдем путь рядом с именем объекта следующим образом.

Шаг 1: Теперь давайте войдем в VBA с опцией visual basic. Его можно найти на вкладке разработчика.

Шаг 2: Как только мы находимся в VBA, нам нужно вставить модуль. Чтобы войти в окно кода, дважды щелкните модуль, который приведет нас к окну кода.

Шаг 3: Теперь первый шаг для написания кода VBA — назвать макрос следующим образом.

Код:

Шаг 4: Объявите переменную как строку, которая будет хранить путь к файлу.

Код:

Шаг 5: Теперь давайте назначим путь к этой строке файла, который мы хотим удалить, это sample1.

Код:

Шаг 6: Теперь давайте удалим файл, используя функцию Kill следующим образом.

Код:

Шаг 7: Когда мы запускаем приведенный выше код и смотрим на рабочий стол, мы больше не можем найти первый созданный нами текстовый файл.

Присутствует только второй файл, и первый файл перемещается. Теперь, что произойдет, если путь к файлу был неправильным или файл даже не существует. Теперь мы удалили первый файл, и он даже не существует, поэтому мы можем запустить код еще раз, чтобы проверить, какой результат мы получим. Запустите приведенный выше код еще раз.

VBA дает нам ошибку во время выполнения, что файл не найден. Это важно, что мы должны иметь в виду.

Пример № 2 — VBA Удалить файл

Теперь давайте удалим второй файл, используя функцию kill. Опять же, нам нужно указать путь ко второму файлу, для которого нам нужно щелкнуть правой кнопкой мыши по файлу, и из опции свойств перейти к безопасности, и мы найдем путь к имени объекта следующим образом.

Теперь у нас есть путь для второго файла, поэтому давайте удалим этот файл.

Шаг 1: Войдите в VBA через вкладку разработчика.

Шаг 2: Как только мы находимся в VBA, нам нужно вставить модуль. Чтобы войти в окно кода, дважды щелкните модуль, который приведет нас к окну кода.

Шаг 3: Сначала назовите макрос, чтобы продолжить работу следующим образом.

Код:

Шаг 4: Как и выше, объявите переменную как строку для хранения пути к файлу.

Код:

Шаг 5: В строке сохраните путь к файлу следующим образом.

Код:

Шаг 6: Теперь мы проверим, что файл даже существует, используя функцию If следующим образом.

Код:

Шаг 7: Теперь, если мы запустим приведенный выше код, мы увидим, что файл удален и его больше нет на рабочем столе.

Шаг 8: В приведенном выше примере мы видели, что если файл не существует, VBA выдает нам ошибку и в этом случае, поскольку файл был удален, мы можем снова запустить код и увидеть, что вместо ошибки мы получаем персонализированное сообщение следующим образом.

То, что нужно запомнить

Есть несколько вещей, которые мы должны помнить об удалении файла в VBA:

  1. Мы используем функцию Kill для удаления файла.
  2. Нам нужен путь к конкретному файлу, который нужно удалить.
  3. Если файл не найден, мы сталкиваемся с ошибкой.
  4. Файлы, удаленные функцией Kill, не попадают в корзину.

Рекомендуемые статьи

Это руководство по удалению файла VBA. Здесь мы обсудим, как использовать Excel VBA Delete File вместе с несколькими практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —

  1. Как использовать VBA While Loop?
  2. VBA Удалить дубликаты
  3. Понимание типов данных VBA
  4. VBA Sleep с примерами

Источник

Удаление файлов с помощью VBA в Excel

Добрый день, уважаемые читатели блога! Как водится, сегодня мы поговорим о программе Excel, но в не совсем привычной для нас функции — файловом менеджере. Постараюсь ответить на вопрос — может ли Excel с помощью макросов удалять файлы?

Ответ однозначный — да. Для этого в языке VBA есть специальный оператор — kill. Для нас он и представляет определённый интерес. 

Давайте посмотрим как его можно использовать. Имеется папка (в моём примере это C:Для всех), её нужно очистить от файлов с расширением *.xlsx.

Удаление файлов с помощью VBA в Excel

Создадим новую книгу и, как обычно, добавим в неё стандартный модуль. Мы рассматривали этот алгоритм в предыдущих статьях.

  • вкладка «Разработчик», кнопка «Visual basic»;
  • вставляем новый модуль и помещаем следующий код макроса.

Sub DF()
‘ Удаление всех файлов из папки с расширением .xlsx
Kill «C:Для всех» & «*.xlsx»
End Sub

Удаление файлов с помощью VBA в Excel

Будьте внимательны — макрос не удаляет файлы в «Корзину», а полностью стирает их с жёсткого диска компьютера! 

Аналогично сочетанию клавиш Shift+Delete.

Проверим работоспособность нашего кода. Запустим окно выбора макросов комбинацией клавиш Alt+F8 и нажмём «Выполнить».

Удаление файлов с помощью VBA в Excel

Результат на лицо — в папке остался только один файл «Изменение листа.xlsm» потому что у него разрешение не совпадает с указанным в макросе.

Также хочется отметить, что привычное сочетание клавиш Ctrl+Z не поможет восстановить файлы.

Удаление файлов с помощью VBA в Excel

Необходимая оговорка — макрос можно использовать для всех типов файлов. Для этого необходимо изменить в макросе расширение *.xlsx на нужное для удаления вам.

������������� �������� ������

������������� �������� ������

��������� �������� VBA, ����� ������� ��� ��������� �����, ��� � ������ ������ � ������������ � ��������� �����������.

����� ������� ��������� ����, ����� ��������������� ��������� �������� (������� 3.49).

������� 3.49. �������� �����

Sub DeleteFile()

Kill �C:���������primer.xls�

End Sub

� ���������� ���������� ������� ������� ����� ������ ���� primer.xls, ������������� �� ������ �: ���������.

��� �������� ������ ������ � ������������ ����������� ����� ������������ ��������� ������ (������� 3.50).

������� 3.50. �������� ������ ������

Sub DeleteFiles()

‘ �������� ���� ������ � ����������� XLS �� �������� �����

Kill �C:���������� & �*.xls�

End Sub

����� ���������� ����� ������� �� ����� ��������� �� ����� �: ����� ������� ��� �����, ������� ���������� XLS.

��� �������� ������ � ������� ����������� �������� ������� ���������, ��� ��� �� ���������� � �������, � ������������ ��������� � �������� �����.

Удаление файла через заданный промежуток времени

gallant

Дата: Среда, 08.10.2014, 10:42 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Комрады. Добрый день. Сильно не бейте, но нет времени искать совершенно.
Задача такая. Есть файл Excel с данными. Его периодически отсылаем в другой офис с обновлённой информацией в качестве отчёта.
Хотелось бы чтобы иные сотрудники не воспользовались файлом и не переслали конкурентам или сами воспользовались инфой.
Т.е. скажем… Мы отослали файл… Они его посмотрели-обсудили… И на следующий день или через два дня он изчез!

Реально ли?

 

Ответить

VEKTORVSFREEMAN

Дата: Среда, 08.10.2014, 10:43 |
Сообщение № 2

Группа: Друзья

Ранг: Ветеран

Сообщений: 772


Репутация:

129

±

Замечаний:
0% ±


MS Office Excel 2010

gallant, а как вариант поставить защиту книги паролем?


«Опыт — это то, что получаешь, не получив того, что хотел»

 

Ответить

Rioran

Дата: Среда, 08.10.2014, 10:47 |
Сообщение № 3

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

gallant, здравствуйте.

VEKTORVSFREEMAN, защита книги паролем здесь поможет слабо — необходимо не ограничить доступ вообще, а ограничить доступ некоторым отрезком времени, если я правильно понял.

Может помочь макрос со следующей логикой:

1). При открытии книги показывает стартовую страницу. Без разрешения макросов ничего посмотреть нельзя.
2). После разрешения макросов проверяется текущая дата. Если время для просмотра файла истекло — удаляем содержимое книги.
3). По закрытию книги защищаем структуру и делаем доступной для просмотра только стартовую страницу.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

Сообщение отредактировал RioranСреда, 08.10.2014, 10:47

 

Ответить

VEKTORVSFREEMAN

Дата: Среда, 08.10.2014, 10:52 |
Сообщение № 4

Группа: Друзья

Ранг: Ветеран

Сообщений: 772


Репутация:

129

±

Замечаний:
0% ±


MS Office Excel 2010

защита книги паролем здесь поможет слабо

ну думаю это как самый легкий вариант, понимаю что разница весомая, но неужели сторонние люди которые хотели бы взглянуть результаты будут ломать голову «Как узнать пароль?» или «Как его снести?» Ведь пароль не имеет срока службы, так что файл будет покоится защищенным, пока его либо не удалят, либо железо не спишут в утиль. Конечно задумка с удалением данных 100% вариант))


«Опыт — это то, что получаешь, не получив того, что хотел»

 

Ответить

Tachkin

Дата: Среда, 08.10.2014, 10:53 |
Сообщение № 5

Группа: Пользователи

Ранг: Участник

Сообщений: 63


Репутация:

9

±

Замечаний:
20% ±


Excel 2007

Rioran, я бы при открытии просто время системное менял и все в таком случае))

а файл точно с логикой должен быть, может проще в виде значений присылать?

 

Ответить

Rioran

Дата: Среда, 08.10.2014, 11:06 |
Сообщение № 6

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

Rioran, я бы при открытии просто время системное менял

Это если бы Вам было известно, что файл с сюрпризом =) От этого можно защититься счётчиком на количество открытий и/или подгрузкой времени из интернета.

Ещё можно поставить защиту на выделение ячеек, чтобы нельзя было копировать с листа.

А ещё, чтоб уж совсем надёжно — можно провести презентацию на своей территории, если данные слишком дороги компании.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

gallant

Дата: Среда, 08.10.2014, 11:20 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Пароль — не вариант. Его всё-равно сообщить придётся.
Задумка — нечего филиалу копить информацию, которую можно использовать в корыстных целях.
Кстати идея со счётчиком открываний хорошая. Сделать раза на 2-3, и достаточно.
Как реализовать?

 

Ответить

Tachkin

Дата: Среда, 08.10.2014, 11:31 |
Сообщение № 8

Группа: Пользователи

Ранг: Участник

Сообщений: 63


Репутация:

9

±

Замечаний:
20% ±


Excel 2007

gallant, Пароль не на открытие файла имелся ввиду, а на редактирование, что бы доступен был только просмотр.

Макрос повесить на книгу, что бы при таком то значении в какой-нить защищенной ячейке, удалял в книге все листы, сохранял и закрывал приложение.

Вот только я второй раз из почты этот же файл достану и снова доброе утро. Тут надо уже очень глубоко копать(тереть историю в почте, прописывать счетчик где нить в реестре), оно Вам надо?

 

Ответить

VEKTORVSFREEMAN

Дата: Среда, 08.10.2014, 11:33 |
Сообщение № 9

Группа: Друзья

Ранг: Ветеран

Сообщений: 772


Репутация:

129

±

Замечаний:
0% ±


MS Office Excel 2010

я второй раз из почты этот же файл достану

о как!? интересно получается))


«Опыт — это то, что получаешь, не получив того, что хотел»

 

Ответить

gallant

Дата: Среда, 08.10.2014, 13:41 |
Сообщение № 10

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007


Дело в том что это само собой. Нужно что бы свежие комментарии в базе не смогли применить «на стороне».

я второй раз из почты этот же файл достану

о как!? интересно получается))

Да за ради бога. Только там будут устаревшие данные и если он сохранит файл… то он снова с компа удалится.

Короче… Это база клиентов с очень ценными комментариями, которые регулярно меняются и дополняются.

 

Ответить

gallant

Дата: Среда, 08.10.2014, 13:42 |
Сообщение № 11

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Кто-нибудь скажите — есть такое решение или копать в другую сторону?
Я думал что в Экселе это не сложно

 

Ответить

Tachkin

Дата: Среда, 08.10.2014, 14:01 |
Сообщение № 12

Группа: Пользователи

Ранг: Участник

Сообщений: 63


Репутация:

9

±

Замечаний:
20% ±


Excel 2007


Что то я ничего не понял.

Зачем тогда удалять файл, если устаревание информации происходит очень быстро?

Дано: Есть основной файл, в котором хранится особо важная информация, необходимо, чтобы по итогу ознакомления с ней филиал (которому совсем доверия нет) эту информацию терял. Тут могут быть проблемы, я писал выше, что извернуться можно по разному, и доступ ограничить просто так не получится.

НО: Вы говорите, что устаревание происходит после дня-двух (нескольких открытий файла) и ценность информации скатывается к 0.

Что тогда мешает просто оставлять файл в филиале, если он уже обесценился?

 

Ответить

gallant

Дата: Среда, 08.10.2014, 15:34 |
Сообщение № 13

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Зачем тогда удалять файл, если устаревание информации происходит очень быстро?

Информация в базе имеет накопительный характер.
Господа. Вопрос не в том зачем мне это нужно.
Вопрос в том ка это сделать!

 

Ответить

AndreTM

Дата: Среда, 08.10.2014, 16:25 |
Сообщение № 14

Группа: Друзья

Ранг: Старожил

Сообщений: 1762


Репутация:

498

±

Замечаний:
0% ±


2003 & 2010

gallant, вы смешиваете информацию с носителем. В вашем случае «файл с данными» — это носитель информации. А изначальная тема вопроса — защита самой информации.
Простой пример: если информация никому не нужна — то носитель и так уйдет в забвение (будет уничтожен, погребен в ворохе дальнейшей текучки, никому не будет более интересен); если же именно нужна, и именно информация — то противостоять копированию можно только административными мерами по защите её, а не носителя… :)
А это совсем другая тема…


Skype: andre.tm.007
Donate: Qiwi: 9517375010

 

Ответить

gallant

Дата: Четверг, 09.10.2014, 08:15 |
Сообщение № 15

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

носитель и так уйдет в забвение

Это догадки… А нужен 100% вариант что концов не осталось

Я так понял решения нет

 

Ответить

AndreTM

Дата: Четверг, 09.10.2014, 13:00 |
Сообщение № 16

Группа: Друзья

Ранг: Старожил

Сообщений: 1762


Репутация:

498

±

Замечаний:
0% ±


2003 & 2010

противостоять копированию можно только административными мерами по защите её, а не носителя…


Skype: andre.tm.007
Donate: Qiwi: 9517375010

 

Ответить

gallant

Дата: Четверг, 09.10.2014, 16:31 |
Сообщение № 17

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Это человеческий фактор, который нужно исключить

 

Ответить

AndreTM

Дата: Четверг, 09.10.2014, 22:44 |
Сообщение № 18

Группа: Друзья

Ранг: Старожил

Сообщений: 1762


Репутация:

498

±

Замечаний:
0% ±


2003 & 2010

Это человеческий фактор, который нужно исключить

shock
Сугубое имхо, — как раз всё наоборот. Проще всего обязать кого-то «на месте» наблюдать за конфиденциальностью, нежели полагаться на «автоматическое испарение информации насовсем», которое (специалисты не дадут соврать) невозможно в принципе… Ту ведь дело как раз не в самом Excel — попробуйте заменить слова «файл Excel c данными» на «папочка (бумажная) с каждонощными фотками нашей секретарши» — и подумайте… :D


Skype: andre.tm.007
Donate: Qiwi: 9517375010

 

Ответить

gallant

Дата: Понедельник, 13.10.2014, 08:49 |
Сообщение № 19

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

которое (специалисты не дадут соврать) невозможно в принципе…

Уж совсем то КГБ устраивать не нужно… Да и никто не будет настолько копаться в аналах «Корзины». Но человеческий фактор я бы исключил максимально. Люди такие существа непостоянные!

 

Ответить

Alex_ST

Дата: Понедельник, 13.10.2014, 16:31 |
Сообщение № 20

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Лежит у меня в заначке мерзкая бяка, код которой я вставлю в модуль «ЭтаКнига» важных файлов перед увольнением…
[vba]

Код

Private Sub Workbook_BeforeClose(Cancel As Boolean)   ‘книга уничтожится безвозвратно после заданной даты!!!
    If Date <= #12/31/2029# Then Exit Sub
    With ThisWorkbook
       .Saved = True
       .ChangeFileAccess xlReadOnly
       On Error Resume Next
       SetAttr .FullName, 0 ‘ снять атрибут у файла «Только чтение»
       Kill .FullName
       .Close False
    End With
End Sub

[/vba]
подпилить под просьбу gallant, ИМХО, элементарно :)



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Excel макрос удалить пустые ячейки
  • Excel макрос удалить пустую строку
  • Excel макрос удалить диапазон
  • Excel макрос удаление ячеек по условию
  • Excel макрос удаление строк при условии если