none
Dúvida - Macro abrir arquivo com nome do valor da célula RRS feed

  • Pergunta

  • Bom dia.

    Não estou conseguindo abrir um arquivo .pdf com o nome do valor que está em uma célula. Procurei algo pela internet e cheguei até ai:

    Dim File01 As String File01 = Range("B3").Value ' Workbooks.Open Filename:="P:\SISTEMA\(File01).pdf" End Sub

    O problema é que a macro está procurando na pasta o arquivo File01.pdf, mas não quero isso. Quero que ela abra o arquivo com o nome que está na célula B3.

    Se possível me ajude. Desde já, obrigado.


    sexta-feira, 18 de julho de 2014 11:42

Respostas

  • Luiz,

    Seu Office é 32bit? Então faça desta forma:

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
            ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
            ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Sub Macro1()
        ShellExecute 0, "Open", "P:\SISTEMA\" & Range("B3").Value & ".pdf", "", "", SW_SHOW
    End Sub
    

    Se o Office for 64bit, faça desta outra forma:

    Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
            ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, _
            ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
    Sub Macro1()
        ShellExecute 0, "Open", "P:\SISTEMA\" & Range("B3").Value & ".pdf", "", "", SW_SHOW
    End Sub

    Deve funcionar, testei aqui!

    sexta-feira, 18 de julho de 2014 14:00

Todas as Respostas

  • Use apenas o comando abaixo:

    ShellExecute(0, "open", thisworkbook.Sheets("NomedaPlanilha").range("B3").value, "", "", SW_SHOW)

    sexta-feira, 18 de julho de 2014 11:45
  • Natan Silva.  Está gerando esse erro: "Erro de sintaxe".

    O que realmente quero é que a macro entenda o valor da célula B3, por exemplo: 605041 e procure na pasta P:\Sistema, o arquivo 605041.pdf (ou outro valor que se encontrar na célula B3) e abra-o.

    Desculpe pois não conheço nada de programação.

    Obrigado.


    sexta-feira, 18 de julho de 2014 11:52
  • Desculpe,

    esqueci de tirar o parenteses....

    ShellExecute 0, "open", thisworkbook.Sheets("NomedaPlanilha").range("B3").value, "", "", SW_SHOW

    sexta-feira, 18 de julho de 2014 12:13
  • Luiz,

    Tenta assim:

    ShellExecute(0, "Open", "P:\SISTEMA\" & Range("B3").Value & ".pdf", "", "", SW_SHOW)



    • Editado dimascsoares sexta-feira, 18 de julho de 2014 12:19
    sexta-feira, 18 de julho de 2014 12:17
  • Oi dimascsoares, vou colar toda minha macro abaixo:

    Sub Macro1()
    '
    ' Macro1 Macro
    '
    '
    ShellExecute(0, "Open", "P:\SISTEMA\" & Range("B3").Value & ".pdf", "", "", SW_SHOW)
    End Sub

    Quando aperto f5, gera o seguinte problema: "Erro de compilação: Erro de sintaxe".

    Obrigado!

    sexta-feira, 18 de julho de 2014 13:51
  • Natan Silva, vou colar minha macro abaixo:

    Sub Macro1()
    '
    ' Macro1 Macro
    '
    '
    ShellExecute 0, "open", ThisWorkbook.Sheets("PLANILHA VERIFICAR ORDENS").Range("B3").Value, "", "", SW_SHOW
    End Sub

    Quando aperto f5, gera o seguinte problema: "Erro de compilação: 'Sub' ou 'Function' não definida".

    Obrigado!

    sexta-feira, 18 de julho de 2014 13:53
  • Luiz,

    Seu Office é 32bit? Então faça desta forma:

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
            ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
            ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Sub Macro1()
        ShellExecute 0, "Open", "P:\SISTEMA\" & Range("B3").Value & ".pdf", "", "", SW_SHOW
    End Sub
    

    Se o Office for 64bit, faça desta outra forma:

    Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
            ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, _
            ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
    Sub Macro1()
        ShellExecute 0, "Open", "P:\SISTEMA\" & Range("B3").Value & ".pdf", "", "", SW_SHOW
    End Sub

    Deve funcionar, testei aqui!

    sexta-feira, 18 de julho de 2014 14:00
  • Muito obrigado dimascsoares, funcionou perfeitamente. Deus te abençoe.

    Muito obrigado por ajudar também Natan Silva.

    Abraço a todos!

    sexta-feira, 18 de julho de 2014 14:03
  • Obrigado! Assim que puder, marque a resposta como correta!

    Abraço!

    sexta-feira, 18 de julho de 2014 14:05
  • Põe esse trecho acima do seu código...
    Const SW_SHOW = 1
    Const SW_SHOWMAXIMIZED = 3
    
    Public Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

    sexta-feira, 18 de julho de 2014 14:06
  • Olá amigo, bom dia. Não estou conseguindo realizar esta macro. Como você fez? Precisa mudar o diretório (P:SISTEMA)? Me ajuda aí amigo.
    quinta-feira, 15 de junho de 2017 14:06
  • Boa noite! 

    Estou tendo essa mesma necessidade e utilizei este código para abrir planilha através do valor digitado na célula, porém gostaria de saber se é possível encontrar a planilha através do nome digitado na célula em todas as pastas do windows ? Ou seja, a pasta que eu quero encontrar estará sempre em uma subpasta diferente, não estará em uma única pasta. Isso é possível ? 

    Agradeço desde já! 

    Jonatha 

    quinta-feira, 20 de dezembro de 2018 01:02