Usuário com melhor resposta
Como abrir um arquivo jpg no excel via VBA?

Pergunta
-
Oi, em meu formulário, gostaria de abrir uma imagem pelo visualizador de imagens do windows. Mais ou menos assim: o formulário possui um multipage com miniaturas da imagem. Ao dar um clique duplo (Private.... DblClick), a imagem original sera aberta, cujo endereço é salvo em uma variável CatalogoImagens(i), com i sendo o número da página no multipage -Acho que já tenho tudo, falta mesmo as funções para abrir o jpg pelo visualizador de imagens do windows.Encontrei alguns códigos na internet, porém específicos para abrir arquivos office ou .exe
O código que encontrei abaixo funciona, porém abre no paint e minimizado:Function OpenImage(sFileFullPathAndName) On Error GoTo Error_Handler Shell Chr(34) & "C:\Windows\System32\mspaint.exe" & Chr(34) & " " & _ Chr(34) & sFileFullPathAndName & Chr(34), 1 If Err.Number = 0 Then Exit Function Error_Handler: MsgBox "erro" Exit Function End Function
quinta-feira, 26 de maio de 2011 16:45
Respostas
-
Boa Tarde,
O Visualizador de imagens do windows não é um executável, e sim uma dll, (shimgvw.dll)
Espero ter ajudado em algo.
Até
Rafael Hoffmann- Marcado como Resposta Marlon Saveri sexta-feira, 27 de maio de 2011 12:51
quinta-feira, 26 de maio de 2011 20:06 -
Olá Marlon,
Basta usar o segundo parâmetro da função Shell com o valor 3, e não com 1, como você está usando:
Shell(pathname[,windowstyle])
vbHide 0 A janela fica oculta e o foco é passado para a janela oculta. A constante vbHide não se aplica à plataformas Macintosh.
vbNormalFocus 1 A janela tem foco e é restaurada para seu tamanho e posição originais.
vbMinimizedFocus 2 A janela é exibida como um ícone com foco.
vbMaximizedFocus 3 A janela é maximizada com foco.
vbNormalNoFocus 4 A janela é restaurada para seu tamanho e posição mais recentes. A janela atualmente ativa permanece ativa.
vbMinimizedNoFocus 6 A janela é exibida como um ícone. A janela atualmente ativa permanece ativa
Se quiser abrir no visualizador do Windows, use a API ShellExecute, descrita em: http://www.ambienteoffice.com.br/officevba/abrir_arquivos_programaticamente/
Felipe Costa Gualberto - http://www.ambienteoffice.com.br- Marcado como Resposta Marlon Saveri sexta-feira, 27 de maio de 2011 12:51
sexta-feira, 27 de maio de 2011 12:03Moderador
Todas as Respostas
-
Boa Tarde,
O Visualizador de imagens do windows não é um executável, e sim uma dll, (shimgvw.dll)
Espero ter ajudado em algo.
Até
Rafael Hoffmann- Marcado como Resposta Marlon Saveri sexta-feira, 27 de maio de 2011 12:51
quinta-feira, 26 de maio de 2011 20:06 -
Hum, mas tem como abrir um jpg através do dll a partir do vba?sexta-feira, 27 de maio de 2011 02:47
-
Olá Marlon,
Basta usar o segundo parâmetro da função Shell com o valor 3, e não com 1, como você está usando:
Shell(pathname[,windowstyle])
vbHide 0 A janela fica oculta e o foco é passado para a janela oculta. A constante vbHide não se aplica à plataformas Macintosh.
vbNormalFocus 1 A janela tem foco e é restaurada para seu tamanho e posição originais.
vbMinimizedFocus 2 A janela é exibida como um ícone com foco.
vbMaximizedFocus 3 A janela é maximizada com foco.
vbNormalNoFocus 4 A janela é restaurada para seu tamanho e posição mais recentes. A janela atualmente ativa permanece ativa.
vbMinimizedNoFocus 6 A janela é exibida como um ícone. A janela atualmente ativa permanece ativa
Se quiser abrir no visualizador do Windows, use a API ShellExecute, descrita em: http://www.ambienteoffice.com.br/officevba/abrir_arquivos_programaticamente/
Felipe Costa Gualberto - http://www.ambienteoffice.com.br- Marcado como Resposta Marlon Saveri sexta-feira, 27 de maio de 2011 12:51
sexta-feira, 27 de maio de 2011 12:03Moderador -
Obrigado mais uma vez.
Funcionou com
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 LongPtr) As LongPtr
Sub TesteShellExecute() ShellExecute Application.hwnd, "open", catalogo(MultiPage1.value), vbNullString, "C:\", 3 End Sub
Perfeito.sexta-feira, 27 de maio de 2011 12:56 -
Eu utilizei o cód abaixo e abre qualquer tipo de arquivo,
Eu usei em um botão do formulário que carrega o local do arquivo cadastrado.
Private Sub CommandButtonABRIR_ARQUIVO_Click()
Dim myShell As Object
Dim Arquivo As String
Arquivo = CadastrodeCertificado_Consulta.textCertificado.Text
If Arquivo = "" Then
MsgBox "Não há arquivo cadastrado", vbOKOnly, "Erro"
GoTo a:
End If
Set myShell = CreateObject("WScript.Shell")
myShell.Run Arquivo:a End Sub
quarta-feira, 2 de julho de 2014 16:17