Assim:

Dim APPNAME As String
APPNAME = App.Path & "\ARJ A -VA " & A1 & "BACKUP " & App.Path & "\*.MDB"
debug.print
stop
X = Shell(APPNAME, 1)

Agora v em Project -> Immediate Window para chamar a janela de execuo imediata. Rode o cdigo acima e veja o resultado do debug.print nesta janela.




App.path no tem limites, quem tem  o ARJ.

O ARJ.EXE  UM COMPONENTE MS DOS, por isso ele no reconhece arquivos com espao , EX: "C:\Meu Arquivo\Banco de Dados.mdb", tem que ser :
"C:\MeuArquivo\BancodeDados.mdb"

E no reconhece mais que 8 digitos no nome do BD quano descriminado:
EX: "BancodeDanos.mdb" tem que ser : "Bancod~1.mdb"

Caso tenha nomes parecidos:
Ex: "BancodeDanos1.mdb" e "BancodeDanos2.mdb"
Fica: "Bancod~1.mdb" e "Bancod~2.mdb"

Para se becapear mais de um arquivo basta colocalos em sequensia:
Arj a -va Destino.arj Bancod~1.mdb Bancod~2.mdb

Para descompactar:
Arj e -v Destino.arj 


Espero ter ajudado.



Eu fiz mais alguns testes aqui, criei um arquivo "Meus testes ARJ" no Desktop, ento fica o endereo original assim 
C:\WINDOWS\Desktop\Meus testes ARJ\ certo?

o App.Path como destino do ARJ.EXE no deu nenhum problema quando a quantidade de caracteres ou espaos, pois o exemplo de teste estava em
C:\WINDOWS\Desktop\Meus Projetos\
, mas para o destino sim, portanto "Meus testes ARJ" tem 2 problemas , tem espaos e tem mais de 8 caracteres, o problema se da porque o ARJ para no 1
caracter espao quando vc descrimina o destino.
E VC No precisa mudar os nomes de seus diretrios , pois podera atrapalhar outros programas ja existentes. mas sim vc pode criar um para isso.

O "Meus testes ARJ" tive que mudar para "MeustestesARJ" dai fica:
C:\WINDOWS\Desktop\MeustestesARJ\ mas vc me pergunta , ELE AINDA TEM MAIS DE 8?

Basta vc contar 6 caracteres e colocar ~1 . ex: Meuste~1

CASO VC TENHA mais de um nome parecido EX MeustestesARJ e MeustestesVB cuidado, pois o DOS poe em ordem alfabetica e poe no final ~1 ~2 ~3 EX: Meuste~1 e Meuste~2

dai ento vc pode colocar assim para becapear arquivos em diretrios diferenter:

APPNAME = App.Path & "\ARJ A -VA " & drive.Text & "WINDOWS\Desktop\Meuste~1\becap\" & nome.Text & ".arj C:\WINDOWS\Desktop\Meuste~1\boleto.MDB C:\WINDOWS\Desktop\Meuste~1\bdclie~1\clientes.MDB C:\WINDOWS\Desktop\Meuste~1\bdsaldos\saldos.MDB"


OU ento vc pode colocar assim para becapear arquivos de um mesmo diretrio:

APPNAME = App.Path & "\ARJ A -VA " & drive.Text & "WINDOWS\Desktop\Meuste~1\becap\" & nome.Text & ".arj C:\WINDOWS\Desktop\Meuste~1\*.MDB

Espero ter ajudado.


H como converter um path fo formato 8.3 (DOS) para o Long (Windows) e vice versa?
Resposta de jaque : : Feito em 10/12/2002 s 12:42:51 As funes abaixo convertem do formato 8.3 para o Long e vice versa. Infelizmente no funciona em Windows 95

Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Declare Function GetLongPathName Lib "kernel32" Alias "GetLongPathNameA" (ByVal lpszShortPath As String, ByVal lpszLongPath As String, ByVal cchBuffer As Long) As Long

Const MAX_PATH = 260

Public Function ShortPathName(ByVal FileName As String) As String

Dim length As Long, res As String

res = String$(MAX_PATH, 0)
length = GetShortPathName(FileName, res, Len(res))
If length Then
ShortPathName = Left$(res, length)
End If

End Function

Public Function LongPathName(ByVal FileName As String) As String

Dim length As Long, res As String
On Error Resume Next

res = String$(MAX_PATH, 0)
length = GetLongPathName(FileName, res, Len(res))
If length And Err = 0 Then
LongPathName = Left$(res, length)
End If

End Function

