Código para criar um zip do BackEnd:
Option Compare Database
Option Explicit
Public Sub ZipaBanco()
'Criado pelo colega Raw do Canadá
'Adaptado por JPaulo ® Maximo Access
Dim strDate As String, DefPath As String
Dim oApp As Object
Dim fname, FileNameZip
'Dim strPrefix As String
On Error Resume Next
DefPath = fncOrigem(mSystem) 'Local e pasta onde está o banco de backup
If Right(DefPath, 1) <> "\" Then
DefPath = DefPath & "\"
End If
strDate = Format(Now, "dd-mmm-yy_h-mm-ss")
FileNameZip = DefPath & Empresa & " Backup " & Format(Date, "Long Date") & " .zip"
'strPrefix = "Teste" 'Nome do banco
fname = BackEndAtual
On Error Resume Next
CriaNovoZip (FileNameZip)
Set oApp = CreateObject("Shell.Application")
oApp.NameSpace(FileNameZip).CopyHere fname
Info "Criado com sucesso em: " & FileNameZip
Set oApp = Nothing
Exit Sub
End Sub
Public Sub CriaNovoZip(sPath)
'Criado pelo colega Raw do Canadá
'Adaptado por JPaulo ® Maximo Access
Dim ofso, arrHex, sBin, i, Zip
On Error Resume Next
Set ofso = CreateObject("Scripting.FileSystemObject")
arrHex = Array(80, 75, 5, 6, 0, 0, 0, _
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
For i = 0 To UBound(arrHex)
sBin = sBin & Chr(arrHex(i))
Next
On Error Resume Next
With ofso.CreateTextFile(sPath, True)
.Write sBin
.Close
End With
Exit Sub
End Sub
'No seu botão é só chamar:
'Private Sub SeuBotão_Click()
'Call ZipaBanco
'End Sub
Identificação da Empresa:
Public Function Empresa() As String
Empresa = "Nome da Empresa"
End Function
Pasta para o backup:
'-------------------------------------------------
'Código de Avelino Sampaio
'Cria uma lista para usar com o argumento pasta
'Cada item corresponde a número começando do zero
'-------------------------------------------------
Public Enum mPasta
mRaiz
mSystem
End Enum
Public Function fncOrigem(Optional pasta As mPasta = mRaiz)
On Error Resume Next
Dim strLocal As String
Select Case pasta
Case 0: strLocal = "\"
Case 1: strLocal = "\System\"
Case Else: MsgBox "Pasta informada fora da lista...", vbInformation, "Aviso"
End Select
fncOrigem = Application.CurrentProject.Path & strLocal
End Function
Retorna o arquivo backend:
Public Function BackEndAtual() As String
Dim strCon As String
' tab_Clientes deve ser uma tabela do backend
strCon = CurrentDb.TableDefs("tab_Clientes").Connect
BackEndAtual = Right$(strCon, Len(strCon) - InStr(1, strCon, "=", 2))
End Function