Fazendo backup de arquivos do Excel em um diretório diferente

0

No Excel 2007, na caixa Salvar como, há uma opção para 'Criar um backup', que simplesmente faz o backup do arquivo sempre que ele é salvo. Infelizmente, ele faz o backup do arquivo no mesmo diretório que o original.
Existe uma maneira simples de alterar esse diretório para outra unidade / pasta? Eu brinquei com macros para fazer isso, criando:

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

Isso cria um backup do arquivo ok na primeira vez, no entanto, se isso for tentado novamente, obtenho:
Erro em tempo de execução '1004';
O Microsoft Office Excel não pode acessar o arquivo 'T: \ TEC_SERV \ Backup file folder - NÃO DELETE \ Test Macro Sheet.xlsm. Há vários motivos possíveis:
O nome ou o caminho do arquivo não existe.
O arquivo está sendo usado por outro programa.
A pasta de trabalho que você está tentando salvar tem o mesmo nome de um ...

Sei que o caminho está correto, também sei que o arquivo não está aberto em nenhum outro lugar. A pasta de trabalho tem o mesmo nome que estou tentando salvar, mas deve ser substituída.

Eu postei a pergunta sobre a codificação no Stack Overflow, mas me perguntei se existe uma maneira mais fácil de fazer isso.

Qualquer ajuda seria muito apreciada. Joe

Joe Taylor
fonte
Por algum motivo estranho, não vejo essa opção no meu Excel '07. Que versão você tem?
Isxek
11
Não ajuda a responder ao OP, mas a responder ao lsxek: Quando você vai para Salvar como ..., clique no botão Ferramentas, Opções gerais. É aqui que você obtém a caixa de seleção "Sempre criar um backup", além das opções de senha. A opção é por documento, independentemente de quem é a edição, não para todas as planilhas criadas. Na verdade, ele não está criando um backup (não realiza uma operação extra de gravação), é mais ou menos assim: O salvamento normal de arquivo cria um novo arquivo temporário e, uma vez completamente salvo, ele exclui o original e renomeia a nova cópia. O backup simplesmente renomeia o original em vez de excluí-lo.
AdamV

Respostas:

1

A pasta de trabalho que você está tentando salvar tem o mesmo nome que um ...

Estou assumindo que isso termina em "como uma pasta de trabalho que já está aberta". Não sei por que isso é um requisito, mas o Excel não toca em duas planilhas com o mesmo nome de arquivo. Você pode tentar & Workbook.Name & ".bak"seu código.

Embora você deva notar que provavelmente está fazendo isso da maneira errada. O que você está tentando fazer é chamado de "controle de versão" e deve procurar em Cópias de sombra e um repositório de códigos-fonte (mesmo que essa planilha do Excel não seja um código-fonte, você ainda pode fazer a versão do arquivo). Isso é mais provável "A coisa certa a fazer (TM)"

ta.speot.is
fonte
Eu alterei o código para conter um .bak; na primeira instância, ele executa o resultado desejado. No entanto, toda vez que é executado posteriormente, gera o mesmo erro de antes. Sua ajuda é apreciada
Joe Taylor
Use <a href=" technet.microsoft.com/en-us/sysinternals/…> para garantir que a cópia não esteja sendo mantida aberta e também para que o arquivo não seja sinalizado como somente leitura.Pensei que SaveCopyAs talvez não substitua um arquivo existente. você pode excluir o arquivo antes de executar SaveCopyAs, ou considerar nomear os backups como Filename.YYYY.MM.DD.HH.MM.SS.xls. Embora eu não posso salientar o quão fortemente você deve estar usando um sistema de controle de versão .
ta.speot.is
Obrigado pela ajuda. Infelizmente, estamos trabalhando em um pequeno segmento do sistema universitário corporativo e simplesmente não temos voz sobre quais sistemas estão em vigor. O backup em um diretório diferente é apenas para manter uma versão do arquivo em outro diretório, caso alguém o exclua de forma adequada.
Joe Taylor
0

Ok, então o longo e o curto parecem que não há uma maneira fácil de fazer isso. Não existe a função presente no Excel para permitir que os backups sejam salvos em uma pasta diferente. O que é necessário é uma macro do Visual Basic bastante simples - semelhante à descrita acima. Eu levei em consideração as idéias de Taspeotis e, portanto, votei sua resposta. Não dei a resposta tão correta quanto ela não responde à pergunta. Eu aprecio o tempo dado embora.

Joe Taylor
fonte