Usuário com melhor resposta
Dúvida - Macro abrir arquivo com nome do valor da célula

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.
- Editado Luiz.Guimarães sexta-feira, 18 de julho de 2014 13:48
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!
- Marcado como Resposta Luiz.Guimarães sábado, 19 de julho de 2014 13:53
Todas as Respostas
-
-
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.
- Editado Luiz.Guimarães sexta-feira, 18 de julho de 2014 11:53
-
-
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
-
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!
-
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!
-
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!
- Marcado como Resposta Luiz.Guimarães sábado, 19 de julho de 2014 13:53
-
-
-
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
-
-
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