Notifications
Clear all

COMANDO SHELL no VBA

6 Posts
2 Usuários
0 Reactions
4,200 Visualizações
(@jose_da_silva)
Posts: 24
Eminent Member
Topic starter
 

Caros amigos tenho uma aplicação VBA com uma entrada de um formulário. Os dados digitados deveram ser gravados em uma nova planilha em determinada pasta escolhida pelo usuário. A idéia é, em tempo de execução, o usuário abrir a pasta desejada com o Windows Explorer. Isto eu consegui utilizando o comando "'Let Pasta_Selecionada = Shell("IEXPLORE.EXE" & diretorio, vbNormalFocus)" após a confirmação dos dados digitados. O que eu não consegui é guardar o nome desta pasta para salvar automaticamente esta nova planilha na pasta escolhida. A variável "Pasta_Selecionada" me retorna um valor numérico. Tem alguma solução diferente ?

 
Postado : 01/03/2012 5:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pode dar maiores detalhes, se possivel um pequeno exemplo do que tem e principalmente do que espera?

 
Postado : 01/03/2012 7:08 am
(@jose_da_silva)
Posts: 24
Eminent Member
Topic starter
 

Caro Reinaldo anexei um modelo simplificado para sua compreensão. O resultado atual é que ao abrir o windows explorer com o comando shell, eu não consigo captar a pasta selecionada para utilizar no comando "Save". A varíavel "pasta selecionada" gera um valor numérico e não uma pasta-caminho. Desse modo a planilha irá gravar na pasta padrão do Excel.

Poderia até ter uma maneira diferente de fazer isto, como por exemplo solicitar do usuário que entre com o nome completo da pasta-caminho, mas não é isto que eu quero.

Abraços!

 
Postado : 02/03/2012 5:54 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se utilizar "Application.GetSaveAsFilename", ira abrir a janela para seleção do diretorio/pastas onde deseja salvar.
Veja no seu exemplo:
If MsgBox("Voce quer salvar este arquivo agora ?", vbYesNo) = vbYes Then
MsgBox ("Eu vou abrir o explorer para selecionar a pasta destino ! Após a seleção da pasta, clique no botão fechar")
' Let Pasta_Selecionada = Shell("c:windowsexplorer.EXE " & diretorio, vbNormalFocus)
Nome_Arq = TextBox1 & "_ARQUIVO_TESTE.xls"
fileSaveName = Application.GetSaveAsFilename(Nome_Arq, fileFilter:="xls Files (*.xls), *.xls")
ActiveWorkbook.SaveAs Filename:=fileSaveName
End If

 
Postado : 02/03/2012 9:16 am
(@jose_da_silva)
Posts: 24
Eminent Member
Topic starter
 

Obrigado Reinaldo funcionou como eu queria. Abraços!

 
Postado : 02/03/2012 10:49 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!!

Marque seu tópico como resolvido!!

Att

 
Postado : 02/03/2012 4:46 pm