Nano Hash - криптовалюты, майнинг, программирование

Макрос VBA для сохранения файла excel в другом месте резервного копирования

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

Private Sub Workbook_BeforeClose(Cancel As Boolean)  
'Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  
    'Saves the current file to a backup folder and the default folder  
    'Note that any backup is overwritten  
    Application.DisplayAlerts = False  
    ActiveWorkbook.SaveCopyAs Filename:="T:\TEC_SERV\Backup file folder - DO NOT DELETE\" & _ 
    ActiveWorkbook.Name  
    ActiveWorkbook.Save  
    Application.DisplayAlerts = True  
End Sub  

Это создает резервную копию файла в первый раз, однако, если повторить попытку, я получаю:

Ошибка выполнения "1004";
Microsoft Office Excel не может получить доступ к файлу "T:\TEC_SERV\Резервная папка с файлами - НЕ УДАЛЯТЬ\Тестовый лист макросов.xlsm". Возможных причин несколько:
Имя файла или путь не существуют
Файл используется другой программой
Книга, которую вы пытаетесь сохранить, имеет то же имя, что и...

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

Любая помощь приветствуется.

14.05.2010

  • Я не могу воспроизвести это поведение (по крайней мере, не с Excel 2002). Там нормально работает. Вы уверены, что у вас не открыт файл резервной копии? А знаете ли вы, что когда вы открываете свой файл резервной копии, он попытается сделать резервную копию себя в папку резервных копий? 14.05.2010
  • Да, я знаю об этом, это одна из проблем с командой закрытия, которая заставила меня подумать о том, чтобы перейти к команде сохранения. Это устранит проблему из резервной копии, поскольку она не будет сохранена. Резервный файл точно не открыт. Это немного загадка. Я также изначально запускал команду с помощью настраиваемой кнопки на панели инструментов, но у меня были проблемы с тем, что люди забывали ее щелкнуть. Следовательно, событие закрытия заменяется. 14.05.2010

Ответы:


1

Я изменил код на это:

Sub BUandSave2()
'Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Saves the current file to a backup folder and the default folder
'Note that any backup is overwritten
Dim MyDate
MyDate = Date    ' MyDate contains the current system date.
Dim MyTime
MyTime = Time    ' Return current system time.
Dim TestStr As String
TestStr = Format(MyTime, "hh.mm.ss")
Dim Test1Str As String
Test1Str = Format(MyDate, "DD-MM-YYYY")

Application.DisplayAlerts = False
'
Application.Run ("SaveFile")
'
ActiveWorkbook.SaveCopyAs Filename:="T:\TEC_SERV\Backup Test\" & Test1Str & " " & TestStr & " " & ActiveWorkbook.Name
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub

теперь он работает нормально. В университетской сети должно быть что-то, что мешает запуску оригинала. У меня дома с этим проблем не было.

20.05.2010
  • Спасибо, я начал использовать это! 25.11.2016

  • 2

    Я попробовал код, написанный вами, и обнаружил, что код работает, но когда я открыл файл резервной копии, я получил ту же ошибку, что и вы.

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

    Я написал код, чтобы помочь с этой ошибкой:

    If ActiveWorkbook.Path = "D:\MOVIES\excel test\Backup" Then
        Exit Sub
    Else
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveCopyAs Filename:="D:\MOVIES\excel test\Backup\" & _
        ActiveWorkbook.Name
        ActiveWorkbook.Save
        Application.DisplayAlerts = True
    

    Я не думаю, что с университетской сетью что-то не так.

    Если вы не удовлетворены ответом или у вас есть какие-либо сомнения, пожалуйста, напишите мне по адресу [email protected]

    С уважением

    Кишлай Мишра

    14.04.2013

    3

    Просто чтобы завершить отличный код joe и kishlaymshr для ясности, спасибо!:

    Sub AutoBackup()
    
        If ActiveWorkbook.Path = "F:\TEMP\" Then
    
            Exit Sub
    
        Else
    
            Dim MyDate
            MyDate = Date    ' MyDate contains the current system date.
            Dim MyTime
            MyTime = Time    ' Return current system time.
            Dim TestStr As String
            TestStr = Format(MyTime, "hh.mm.ss")
            Dim Test1Str As String
            Test1Str = Format(MyDate, "DD-MM-YYYY")
            Application.DisplayAlerts = False
            ActiveWorkbook.SaveCopyAs Filename:="F:\TEMP\" & _
               Test1Str & "-" & TestStr & "-" & ActiveWorkbook.Name
            ActiveWorkbook.Save
            Application.DisplayAlerts = True
        End If
    
    End Sub
    
    25.10.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..