Notifications
Clear all

Backup de Planilha

16 Posts
3 Usuários
0 Reactions
4,541 Visualizações
(@miranda)
Posts: 46
Trusted Member
Topic starter
 

Boa Tarde!

Senhores (as), realizo backup manual de Planilha de Produtos do C:/(Servidor Mãe) para uma pasta pública (Servidor de Gravação). Necessito automatizá-la e pensei por via VBA, pesquisei no Fórum e encontrei o Artigo: "backup automático em diretório diferente ao atual" - mas ao abrir, o tópico é sobre: "Exlcuir linha e evitar erro", sendo totalmente diferente do título proposto. Por favor, podem me ajudar? Gostaria que em determinado horário, diariamente (16:00 hs), de forma automática, a Planilha do Servidor Mãe fosse sobrescrita na Planilha do Servidor de Gravação, seria possível?
Desde já, agradeco!!

Local da Planilha no Servidor Mãe: C:UsersAll UsersProdutosProdutos.exe
Local da Planilha no Servidor de Gravação: I:ProdutosProdutos.exe

 
Postado : 11/04/2014 11:13 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Eu não entendi, você precisa copiar um arquivo de um determinado diretório para outro diretório?

Ou deseja copiar uma Guia especifica de um arquivo especifico para outro destino?
:? :?

Sub AleVBA_11281()
    FileCopy " C:UsersAll UsersProdutosProdutos.xls", "I:ProdutosProdutos.xls"
End Sub

Att

 
Postado : 11/04/2014 11:33 am
(@miranda)
Posts: 46
Trusted Member
Topic starter
 

Alexandre, boa tarde!

Obrigado pela ajuda!
Seria copiar o arquivo Produtos.xls para outro diretório, mas de forma automática, diariamente ás 16:00.
Coloquei extensões erradas, favor considerar produtos.xls. :o

 
Postado : 11/04/2014 11:56 am
(@miranda)
Posts: 46
Trusted Member
Topic starter
 

Por favor pessoal, help!
Gostaria que diariamente as 16:00hs, o arquivo fosse sobrescrito em outro, mas em diretorios diferentes.

 
Postado : 11/04/2014 10:00 pm
(@edcronos)
Posts: 1006
Noble Member
 

creio que oq vc quer não é possível com por macro,

por macro a planilha teria que estar aberta na hora programada, e como é uma macro que tem que ficar rodando em tempo integral acho que prejudicaria o desempenho do excel.
Mas existe programas com esse propositivo, a maioria pago, mas tem uns gratuitos, que salva documentos,pastas e ou diretórios em outros lugares como pc na rede, drive virtual, pendrive,...
podem ser programados por hora ou por modificação do arquivo.

mas vc tbm poderia aproveitar a macro para copiar a cada vez que a planilha fosse aberta e/ou fechada
para ter copias de antes e depois de modificadas.

 
Postado : 12/04/2014 12:55 am
(@edcronos)
Posts: 1006
Noble Member
 

Bem, não sei se funciona, mas ...

Sub Auto_Close()
FileCopy " C:UsersAll UsersProdutosProdutos.xls", "I:ProdutosProdutos.xls"
End Sub

Sub auto_Open()
FileCopy " C:UsersAll UsersProdutosProdutos.xls", "I:ProdutosProdutos.xls"
End Sub

seria interessante tbm ter uma certa quantidade de backup anteriores para caso alguém faça alguma "M" que só se note depois.

 
Postado : 12/04/2014 1:16 am
(@miranda)
Posts: 46
Trusted Member
Topic starter
 

Edcronos, obrigado pela ajuda e pelas dicas!
Utilizarei este codigo, ja que funciona ao abrir e fechar a planilha, interessante!
Mas necessito tambem do backup diario, ja que a planilha fica em funcionamento durante todo o dia.
Abçs.

 
Postado : 12/04/2014 7:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Miranda, se pesquisar no Forum com os termos "Criar Backup" encontrara varias opções, uma delas dada como resolvida é a abaixo, veja se ajuda :

Se um arquivo já existe, cria o arquivo(2) [Resolvido]
viewtopic.php?f=10&t=8199

[]s

 
Postado : 12/04/2014 8:40 am
(@miranda)
Posts: 46
Trusted Member
Topic starter
 

Mauro, obrigado pela ajuda!
Mas o intuito seria o backup ou sobrescrever a planilha Produtos.xls diariamente em um determinado local e horario, mas nao conseguir criar/adaptar um codigo para isso, mesmo buscando no Forum.
Abçs.

 
Postado : 12/04/2014 10:17 am
(@edcronos)
Posts: 1006
Noble Member
 

juntando
este:
http://www.ambienteoffice.com.br/office ... m_horario/
ou
http://www.cavalcanteassociados.com.br/ ... php?id=634
com esse.
FileCopy " C:UsersAll UsersProdutosProdutos.xls", "I:ProdutosProdutos.xls"
quem sabe

 
Postado : 12/04/2014 10:37 am
(@miranda)
Posts: 46
Trusted Member
Topic starter
 

Edcronos, novamente, obrigado!
Tentarei fazer e posto o resultado.
Abçs.

 
Postado : 12/04/2014 10:55 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Miranda, me tire uma duvida,quando diz BACKUP de Planilha, está se referindo a planilha que esta aberta ?

Veja bem, o comando FileCopy é utilizado para copiar um arquivo de um determinado local para outro, e este arquivo não pode estar aberto, então se quer criar um "Backup" do arquivo que está aberto, tem de usar "SAveCopyAs", por isso que indiquei aquele link, pois nele estamos criando uma"Cópia" Backup do arquivo aberto.
Se for isto, de uma olhada no link abaixo:
Backup (Macro para guardar em C:)
viewtopic.php?f=10&t=6545&hilit=backup

[]s

 
Postado : 12/04/2014 11:33 am
(@miranda)
Posts: 46
Trusted Member
Topic starter
 

Mauro, novamente obrigado!
Isso mesmo, seria com a planilha aberta.
Tentarei fazer e quem sabe adaptar a automaçao do horario de backup.
Abçs.

 
Postado : 12/04/2014 11:39 am
(@miranda)
Posts: 46
Trusted Member
Topic starter
 

Estou tentando adaptar este código que o Mauro me repassou (Macro para guardar em C:), mas não consigo fazê-lo rodar no Módulo EstaPasta_de_trabalho, já que preciso englobar todas as abas da Pasta. Estou ficando doido, várias coisas ao mesmo tempo!! rsrsrs :shock:

Segue com adaptações de endereço, por favor, me ajudem!!

Private Sub Workbook_BeforeClose(Cancel As Boolean)

With Application
.CommandBars("Cell").Reset
End With

Application.DisplayAlerts = False

Dim awb As Workbook, BackupFileName As String, i As Integer, OK As Boolean

Dim NewFolderName As String
Dim Backup2FileName As String

If TypeName(ActiveWorkbook) = "Nothing" Then Exit Sub

Set awb = ActiveWorkbook

If awb.Path = "" Then
Application.Dialogs(xlDialogSaveAs).Show
Else
BackupFileName = awb.FullName

i = 0
While InStr(i + 1, BackupFileName, ".") > 0
i = InStr(i + 1, BackupFileName, ".")
Wend
If i > 0 Then BackupFileName = Left(BackupFileName, i - 1)
BackupFileName = BackupFileName & ".xls"

OK = False
On Error GoTo NotAbleToSave
With awb
Application.StatusBar = "Salvando Pasta de Trabalho..."
.Save
Application.StatusBar = "Salvando Pasta de Trabalho Backup..."
.SaveCopyAs BackupFileName
OK = True
End With

'BACKUP 2
'Captamos somente o nome do arquivo e redefinimos a extensão
Backup2FileName = awb.Name
Backup2FileName = Left(Backup2FileName, (Len(Backup2FileName) - 4))
Backup2FileName = Backup2FileName & ".xls"

'Define o Novo Caminho para a segunda Cópia
NewFolderName = "C:Produtos"
ActiveWorkbook.SaveCopyAs NewFolderName & "" & Backup2FileName

End If

NotAbleToSave:

Set awb = Nothing
Application.StatusBar = False
If Not OK Then
MsgBox "Cópia de Backup não Salva!", vbExclamation, ThisWorkbook.Name
End If
ThisWorkbook.Save
End Sub

E juntando ao código que o Edcronos também me repassou (Agendando a execução de macros com a função OnTime), como faço para que este Agendamento rode a Macro acima descrita?
Segue o anexo. Valeu!!!

 
Postado : 12/04/2014 12:19 pm
(@edcronos)
Posts: 1006
Noble Member
 

bem seguindo varias dicas fiz uma que funcionou.

mas bem, oq reparei foi...
o o time é acionado quando se abre a planilha, que no caso seta a hora de executar, então só vai funcionar quando definir o horário salvar e reabrir a planilha.

como está salvando a planilha ativa ela tem que estar em primeiro plano e não pode estar sendo usada "tipo fazendo edição" nesse caso só vai executar depois que liberada.
talvez salvando direto sem ser a planilha ativa acabe com esse problema.

coloquei 2 lugares para salvar mas só salvou no primeiro, e as pastas tem que pré existir.
no caso vai salvar a planilha com o nome e data
Backup Hora programada.xlsm13-abr-2014__Backup.xlsm.

 
Postado : 13/04/2014 7:25 am
Página 1 / 2