locked
Armazenar caminho para abrir arquivos RRS feed

  • Pergunta

  • Bom Dia.

     

    Preciso ler alguns arquivos de um caminho, porém este caminho nem sempre é o mesmo. Então eu gostaria que toda vez que o usuário fosse rodar a macro, que ele informe somente o caminho de onde estão os arquivos.

     

    Eu tentei com getopenfile, porém é preciso selecionar o arquivo e não somente o diretório.

     

    Existe alguma maneira de fazer no excel com que apareça uma "caixa de diálogo" para que o usuário possa escolher somente o caminho onde estão os arquivos?

     

    Obrigado

     

    Rafael

    quarta-feira, 7 de novembro de 2007 12:51

Todas as Respostas

  • Define  uma célula para a entrada do caminho, e faça o usuário digitar o endereço na célula, nomeie a célula e toda vez que for usar o caminho na macro coloque ela sempre como referência à célula com o endereço.. tipo..
    endereço = "c:\Minha Pasta"
    caminho = endereço & " meuarquivo.txt"

    quarta-feira, 7 de novembro de 2007 16:13
  • Coloque um botão na Sheet para ele excolher o arquivo.

     

     

    Code Block

    Private Sub cmdOpen_Click()

        'Declare a variable as a FileDialog object.
        Dim fd As FileDialog

        'Create a FileDialog object as a File Picker dialog.
        Set fd = Application.FileDialog(msoFileDialogFilePicker)

        'Declare a variable to contain the path
        'of each selected item. Even though the path is a String,
        'the variable must be a Variant because For Each...Next
        'routines only work with Variants and Objects.
        Dim vrtSelectedItem As Variant

        'Use a With...End With block to reference the FileDialog object.
        With fd

            'Add a filter that includes GIF and JPEG images and make it the first item in the list.
            .Filters.Add "Excel Files", "*.xls; *.xla; *.csv", 1

            'Use the Show method to display the File Picker dialog box and return the user's action.
            'If the user presses the action button...
            If .Show = -1 Then

                'Step through each string in the FileDialogSelectedItems collection.
                For Each vrtSelectedItem In .SelectedItems

                    'vrtSelectedItem is a String that contains the path of each selected item.
                    'You can use any file I/O functions that you want to work with this path.
                    'This example simply displays the path in a message box.
                    MsgBox "Selected item's path: " & vrtSelectedItem

                Next vrtSelectedItem
            'If the user presses Cancel...
            Else
            End If
        End With

        'Set the object variable to Nothing.
        Set fd = Nothing

    End Sub

     

     

     

    Abs,

     

    sexta-feira, 9 de novembro de 2007 19:50
  •  

    Para selecionar uma pasta (não um arquivo), eu gosto desta rotina:

     

    Code Block

    '************** Code Start **************
    'This code was originally written by Terry Kreft.
    'It is not to be altered or distributed,
    'except as part of an application.
    'You are free to use it in any application,
    'provided the copyright notice is left unchanged.
    '
    'Code courtesy of
    'Terry Kreft

    Private Type BROWSEINFO
      hOwner As Long
      pidlRoot As Long
      pszDisplayName As String
      lpszTitle As String
      ulFlags As Long
      lpfn As Long
      lParam As Long
      iImage As Long
    End Type

    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
                "SHGetPathFromIDListA" (ByVal pidl As Long, _
                ByVal pszPath As String) As Long
               
    Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
                "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
                As Long
               
    Private Const BIF_RETURNONLYFSDIRS = &H1
    Public Function BrowseFolder(szDialogTitle As String) As String
      Dim X As Long, bi As BROWSEINFO, dwIList As Long
      Dim szPath As String, wPos As Integer
     
        With bi
            .hOwner = hWndAccessApp
            .lpszTitle = szDialogTitle
            .ulFlags = BIF_RETURNONLYFSDIRS
        End With
       
        dwIList = SHBrowseForFolder(bi)
        szPath = Space$(512)
        X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
       
        If X Then
            wPos = InStr(szPath, Chr(0))
            BrowseFolder = Left$(szPath, wPos - 1)
        Else
            BrowseFolder = vbNullString
        End If
    End Function
    '*********** Code End *****************

     

     

    sábado, 10 de novembro de 2007 23:57
    Moderador