none
Capturar o nome de uma planilha externa RRS feed

  • Pergunta

  • Boa tarde!

    Tenho um código no VBA que abre uma janela para que eu possa selecionar uma planilha e capturar o caminho onde a planilha está e o nome do workbook. Preciso dessas informações para fazer o tratamento dos dados no Power Query.

    O problema é que o Power Query exige saber o nome da sheet além do nome do workbook, eu sou iniciante no VBA e não sei como faço para capturar o nome da sheet e gravar em uma célula da planilha.

    Aqui está o código que possuo:

    Public Function AbrirArquivo() As String
        Dim fso As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        Dim nomeArquivo As String, nomeArquivosemFormato As String
        Dim Filtro As String
        Dim Titulo_da_Caixa As String
        Dim Arquivo As Variant
        
        Filtro = "Todos os Arquivos (*.*),"
        
        Titulo_da_Caixa = "Selecione o arquivo"
        
        ChDrive ("C")
        ChDir ("C:\")
    
        With Application
        
            Filename = .GetOpenFilename(Filtro, 3, Titulo_da_Caixa)
            
            ChDrive (Left(.DefaultFilePath, 1))
            ChDir (.DefaultFilePath)
           
        End With
        
        If Filename = False Then
            MsgBox "Nenhum arquivo foi selecionado."
            Exit Function
        End If
        nomeArquivo = fso.GetFileName(Filename)
        Debug.Print nomeArquivo
    
         nomeArquivosemFormato = fso.GetBaseName(Filename)
        Debug.Print nomeArquivosemFormato
        AbrirArquivo = Filename
        Planilha2.Range("B2") = AbrirArquivo
        Planilha2.Range("C2") = nomeArquivosemFormato
    End Function
    

    Alguém pode ajudar?

    Obs: A planilha que vou selecionar sempre possuirá apenas uma sheet.

    quarta-feira, 16 de setembro de 2020 17:46

Respostas

  • Public Function AbrirArquivo() As String
        Dim fso As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        Dim nomeArquivo As String, nomeArquivosemFormato As String
        Dim Filtro As String
        Dim Titulo_da_Caixa As String
        Dim Arquivo As Variant
        
        Filtro = "Todos os Arquivos (*.*),"
        
        Titulo_da_Caixa = "Selecione o arquivo"
        
        ChDrive ("C")
        ChDir ("C:\")
    
        With Application
        
            Filename = .GetOpenFilename(Filtro, 3, Titulo_da_Caixa)
            
            ChDrive (Left(.DefaultFilePath, 1))
            ChDir (.DefaultFilePath)
           
        End With
        
        If Filename = False Then
            MsgBox "Nenhum arquivo foi selecionado."
            Exit Function
        End If
        nomeArquivo = fso.GetFileName(Filename)
        
         nomeArquivosemFormato = fso.GetBaseName(Filename)
    
        Planilha2.Range("B2") = Filename
        Planilha2.Range("C2") = nomeArquivosemFormato
        Workbooks.Open (Filename)
        Planilha2.Range("B3") = ActiveWorkbook.Sheets(1).Name
        ActiveWorkbook.Close
    End Function


    A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com


    • Editado AndersonFDiniz2 quarta-feira, 16 de setembro de 2020 21:31
    • Marcado como Resposta Guilas sexta-feira, 18 de setembro de 2020 12:48
    quarta-feira, 16 de setembro de 2020 21:28

Todas as Respostas

  • Onde eu coloco essa linha?

    Lembrando que eu presumo não saber o nome da sheet que está em outra planilha

    quarta-feira, 16 de setembro de 2020 19:08
  • Public Function AbrirArquivo() As String
        Dim fso As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        Dim nomeArquivo As String, nomeArquivosemFormato As String
        Dim Filtro As String
        Dim Titulo_da_Caixa As String
        Dim Arquivo As Variant
        
        Filtro = "Todos os Arquivos (*.*),"
        
        Titulo_da_Caixa = "Selecione o arquivo"
        
        ChDrive ("C")
        ChDir ("C:\")
    
        With Application
        
            Filename = .GetOpenFilename(Filtro, 3, Titulo_da_Caixa)
            
            ChDrive (Left(.DefaultFilePath, 1))
            ChDir (.DefaultFilePath)
           
        End With
        
        If Filename = False Then
            MsgBox "Nenhum arquivo foi selecionado."
            Exit Function
        End If
        nomeArquivo = fso.GetFileName(Filename)
        
         nomeArquivosemFormato = fso.GetBaseName(Filename)
    
        Planilha2.Range("B2") = Filename
        Planilha2.Range("C2") = nomeArquivosemFormato
        Workbooks.Open (Filename)
        Planilha2.Range("B3") = ActiveWorkbook.Sheets(1).Name
        ActiveWorkbook.Close
    End Function


    A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com


    • Editado AndersonFDiniz2 quarta-feira, 16 de setembro de 2020 21:31
    • Marcado como Resposta Guilas sexta-feira, 18 de setembro de 2020 12:48
    quarta-feira, 16 de setembro de 2020 21:28