Boa noite amigos
A minha duvida é o seguinte:
Nas linhas a vermelho uma é para a localização do Win 8 64, outra para o Windows 7 32
Como por este código a detetar qual o Windows do sistema e ir para a linha correta da localização do Winrar.
Sub ComprimePastaComWinRar()
'By Piloto
Dim FSO As Object
Dim FromPath As String
Dim ToPath As String
Dim WinRarPath As String 'Localização do WinRar.exe
Dim RarIt As String 'Instrução de linha de comando
Dim SourceDir As String 'O diretório de origem
Dim DestDir As String 'O diretório de destino
Dim DestRarName As String
Dim Dest As String 'Caminho de destino concatenado
FromPath = Me!CaminhoEscolhido
ToPath = Me!CaminhoEscolhido
'inicia a criação da pasta
Set fs = CreateObject("Scripting.FileSystemObject")
'se a pasta existir, deleta
If Right(FromPath, 1) = "\" Then
FromPath = Left(FromPath, Len(FromPath) - 1)
End If
If Right(ToPath, 1) = "\" Then
ToPath = Left(ToPath, Len(ToPath) - 1)
End If
Set FSO = CreateObject("scripting.filesystemobject")
If FSO.FolderExists(FromPath) = False Then
MsgBox FromPath & " não existe."
Exit Sub
End If
'inicio da copia
FSO.CopyFolder Source:=FromPath, Destination:=ToPath
'*** Verifica se existe instalação do WinRar ***
'WinRarPath = "C:\Program Files (x86)\WinRar\" 'Para Windows 8 64
WinRarPath = "C:\Program Files\WinRar\" 'Para Windows 7 32
If Dir(WinRarPath, vbDirectory) = "" Then
MsgBox "O WinRar não está instaldo nesse diretorio." _
& Chr$(13) & "Impossivel comprimir."
Exit Sub
End If
SourceDir = Me.CaminhoEscolhido
'Verifica se a Pasta tem espaços nos nomes
If InStr(1, SourceDir, " ", vbTextCompare) <> 0 Then SourceDir = Chr(34) & SourceDir & Chr(34)
'Letra do Drive de destino
DestDir = Me.CaminhoEscolhido
If Dir(DestDir, vbDirectory) = "" Then MkDir DestDir
DestRarName = "Backup.Rar"
Dest = DestDir & "\" & DestRarName
If InStr(1, Dest, " ", vbTextCompare) <> 0 Then Dest = Chr(34) & Dest & Chr(34)
RarIt = shell(WinRarPath & "WinRar.exe a -r " & Dest & " " & SourceDir, vbHide)
MsgBox "Backup Formato WinRar criado com sucesso...", vbInformation, "Aviso"
DoCmd.Quit
End Sub
Obrigado
A minha duvida é o seguinte:
Nas linhas a vermelho uma é para a localização do Win 8 64, outra para o Windows 7 32
Como por este código a detetar qual o Windows do sistema e ir para a linha correta da localização do Winrar.
Sub ComprimePastaComWinRar()
'By Piloto
Dim FSO As Object
Dim FromPath As String
Dim ToPath As String
Dim WinRarPath As String 'Localização do WinRar.exe
Dim RarIt As String 'Instrução de linha de comando
Dim SourceDir As String 'O diretório de origem
Dim DestDir As String 'O diretório de destino
Dim DestRarName As String
Dim Dest As String 'Caminho de destino concatenado
FromPath = Me!CaminhoEscolhido
ToPath = Me!CaminhoEscolhido
'inicia a criação da pasta
Set fs = CreateObject("Scripting.FileSystemObject")
'se a pasta existir, deleta
If Right(FromPath, 1) = "\" Then
FromPath = Left(FromPath, Len(FromPath) - 1)
End If
If Right(ToPath, 1) = "\" Then
ToPath = Left(ToPath, Len(ToPath) - 1)
End If
Set FSO = CreateObject("scripting.filesystemobject")
If FSO.FolderExists(FromPath) = False Then
MsgBox FromPath & " não existe."
Exit Sub
End If
'inicio da copia
FSO.CopyFolder Source:=FromPath, Destination:=ToPath
'*** Verifica se existe instalação do WinRar ***
'WinRarPath = "C:\Program Files (x86)\WinRar\" 'Para Windows 8 64
WinRarPath = "C:\Program Files\WinRar\" 'Para Windows 7 32
If Dir(WinRarPath, vbDirectory) = "" Then
MsgBox "O WinRar não está instaldo nesse diretorio." _
& Chr$(13) & "Impossivel comprimir."
Exit Sub
End If
SourceDir = Me.CaminhoEscolhido
'Verifica se a Pasta tem espaços nos nomes
If InStr(1, SourceDir, " ", vbTextCompare) <> 0 Then SourceDir = Chr(34) & SourceDir & Chr(34)
'Letra do Drive de destino
DestDir = Me.CaminhoEscolhido
If Dir(DestDir, vbDirectory) = "" Then MkDir DestDir
DestRarName = "Backup.Rar"
Dest = DestDir & "\" & DestRarName
If InStr(1, Dest, " ", vbTextCompare) <> 0 Then Dest = Chr(34) & Dest & Chr(34)
RarIt = shell(WinRarPath & "WinRar.exe a -r " & Dest & " " & SourceDir, vbHide)
MsgBox "Backup Formato WinRar criado com sucesso...", vbInformation, "Aviso"
DoCmd.Quit
End Sub
Obrigado