Sim, e porque não voltar ao básico? Perfect!
Revemos o princípio e melhoramos o presente com excelentes perspectivas para o futuro.
Pronto para COPIAR e COLAR - Abra a caixa de diálogo e escolha o arquivo que desejar para o propósito que preferir.
Primeira opção
Não é raro precisarmos pedir alguma informação para o usuário. Qual a melhor maneira de fazer isso se não usar uma caixa de diálogo?
Sub UserInput()Dim iReply As IntegeriReply = MsgBox(Prompt:="Do you wish to run the 'update' Macro", _Buttons:=vbYesNoCancel, Title:="UPDATE MACRO")If iReply = vbYes ThenRun "UpdateMacro"ElseIf iReply = vbNo Then'Do Other StuffElse 'They cancelled (VbCancel)Exit SubEnd IfEnd Sub
Segunda opção
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])Agora suponhamos que você queira submeter os dados entrados a uma análise prévia e direcionamento...Ahhh, isso seria interessante não é mesmo? Tente isso:
Sub GetUserName()Dim strName As StringstrName = InputBox(Prompt:="Seu nome,por favor.", _Title:="Digite o seu Nome", Default:="Digite seu nome aqui")If strName = " Digite seu nome aqui " Or _strName = vbNullString ThenExit SubElseSelect Case strNameCase "André"'Faça as coisas para o perfil AndréCase "Luiz"'Faça as coisas para o perfil LuizCase "Bernardes"'Faça as coisas para o perfil BernardesCase Else'Faça as coisas para uns perfis mais genéricosEnd SelectEnd IfEnd Sub
Terceira opção
Dim strFilePath As String, strPath As String
Dim fdgO As FileDialog, varSel As Variant
MsgBox "A tabela não está correta, " &
_
"e o arquivo de dados não pôde ser achado na respectiva pasta: " & _
strPath & ". Por favor,localize a pasta que contenha dados de exemplo " & _
".: Dialog.", vbInformation, gstrAppTitle
Set fdgO = Application.FileDialog(msoFileDialogFilePicker)
With fdgO
.AllowMultiSelect = False
.Title = "Localize a pasta com dados de exemplo"
.ButtonName = "Escolha"
.Filters.Clear
.Filters.Add "All Files", "*.*", 1
.FilterIndex = 1
.InitialFileName = strPath
.InitialView = msoFileDialogViewDetails
If .Show = 0 Then
MsgBox "Houve falha para selecionar o arquivo correto. ATENÇÃO: " & _
"Você talvez não tenha aberto uma tabela conectada a aplicação. " & _
" Você pode re-abrir este formulário ou " & _
"inicie o formulário, tentando novamente.", vbCritical,
gstrAppTitle
Let CheckConnect = False
Exit Function
End If
Let strFilePath = .SelectedItems(1)
End With
Let strPath = Left(strFilePath, InStrRev(strFilePath, "\") - 1)
Let varSel = AttachAgain(strPath)
Quarta opção
Sub GetDat ()
' Posiciona num local específico.
ChDrive "C: \"
ChDir "C: \ Teste \"
Let FileToOpen = Application.GetOpenFilename _
(Title:="Por favor escolha o arquivo a importar:", FileFilter:="Arquivos Excel *.xls (*.xls),")''
If FileToOpen = False Then
MsgBox "Arquivo não especificado!", vbExclamation, ":. A&A"
Exit Sub
Else
Workbooks.Open Filename:=FileToOpen
End If
End Sub