Assumindo que strSavePath
é apenas uma string, você pode verificar se "\"
é o caractere mais à direita:
If Right(strSavePath, 1) = "\" Then
doSomething()
Else
doSomethingElse()
End If
Estou usando o msoFileDialogFolderPicker para retornar um caminho quando um usuário deseja depositar um relatório em uma pasta específica.
Um formulário personalizado (ufSelRepType) aparece na macro nos casos em que o local de salvamento padrão já possui um arquivo de saída ou quando o usuário não deseja salvar no local padrão. O formulário personalizado especifica alguns locais comuns de salvamento de relatórios e oferece a opção de selecionar um local alternativo. Clicando no botão cmdCustom faz o seguinte:
Private Sub cmdCustom_Click()
Application.FileDialog(msoFileDialogFolderPicker).Show
Me.Tag = CurDir
Me.Hide
End Sub
O código na macro para manipular a saída do formulário é simples:
strSavePath = ufSelRepType.Tag
Selecionando uma pasta, a string é sempre retornada sem um "\" final. No entanto, se uma raiz da unidade for selecionada (usamos unidades mapeadas para o nosso servidor de arquivos e, embora esse caso possa ser raro, não é um cenário inconcebível), a string retornada termina com um "\".
Como posso verificar o rastreio "\" e lidar com ele?
UPDATE: Por solução abaixo, este é o novo código para o controle de formulário cmdCustom:
Private Sub cmdCustom_Click()
Dim strFolderPath As String
'Getting save folder
Application.FileDialog(msoFileDialogFolderPicker).Show
strFolderPath = CurDir
'Checking that path ends in \
If Right(strFolderPath, 1) = "\" Then
GoTo Complete
Else:
strFolderPath = strFolderPath & "\"
GoTo Complete
End If
Exit Sub
Complete:
Me.Tag = strFolderPath
Me.Hide
Exit Sub
End Sub
Tags microsoft-excel macros vba