Douken Posted March 15, 2018 at 09:24 PM Report #609791 Posted March 15, 2018 at 09:24 PM Boa noite. Pretendo carregar num Userform um dos ficheiros de imagem existentes num dirétorio, com base na informação introduzida numa textbox desse userform. E.g.: Tenho os ficheiros 1.jpeg; 2.jpeg; 3.jpeg. Se na textbo1 digitar 1, no campo de imagem do userform abre-se o jpeg 1.jpeg. Obrigado Cumprimentos.
manuel antonio Posted March 18, 2018 at 01:38 AM Report #609810 Posted March 18, 2018 at 01:38 AM Experimenta este código se as imagens estiverem numa pasta: 1º- declara estas variáveis fora dos módulos ( antes de todas as linhas de código) Option Explicit Dim SEARCH_PATH As String Dim Images() As Variant Depois, cola esta função: Function CaminhoExiste(sCaminho As String) As Boolean 'Testa se um caminho ou arquivo existe (ou é válido) If sCaminho = vbNullString Then CaminhoExiste = False Else CaminhoExiste = True End If 'A forma abreviada da função pode ser escrita como: 'CaminhoExiste = Dir(sCaminho) <> vbNullString End Function Por fim, adapta este código à tua necessidade. 'AQUI COLOCAS A CONDIÇÃO EXIGIDA PARA RODAR O CÓDIGO. Dim NumFiles As Long Dim iDir As String Dim SEARCH_PATH As String Image1.Picture = Nothing SEARCH_PATH = ThisWorkbook.Path & "\FOTOS\3D\" 'ALTERA AS PASTAS DE ACORDO COM AS TUAS. iDir = Dir(SEARCH_PATH & "*.jp*g") Do While iDir <> "" NumFiles = NumFiles + 1 ReDim Preserve Images(1 To NumFiles) Images(NumFiles) = SEARCH_PATH & iDir iDir = Dir Loop Image1.Picture = LoadPicture(Images(1))
Douken Posted March 23, 2018 at 09:04 PM Author Report #609906 Posted March 23, 2018 at 09:04 PM Tentei, mas diz-me que a compilação não é compatível com a versão que estou a utilizar... Eu preparei-o para correr em Vba 6, Vba7, 32 e 64 bits... Talvez tenha a ver com isso.. Em alternativa fiz o seguinte código: Private Sub obterimagem_Click() img = cc_box + ".jpeg" Call ObtemImagens End Sub Private Sub ObtemImagens() Dim DiretorioImagem As String Dim CaminhoArquivo As String Dim CaminhoCompletoImagem As String Dim NomeImagem As String 'obtem o nome da imagem e o sua pasta NomeImagem = img.Value DiretorioImagem = "C:\PROGRAMA\FOTO" 'obtem o caminho completo da imagem CaminhoCompletoImagem = DiretorioImagem & NomeImagem 'carrega a imagem no controle If Dir(CaminhoCompletoImagem) = "" Then MsgBox "Não foi possível carregar a imagem" Image4.Picture = Nothing Else Image4.Picture = LoadPicture(CaminhoCompletoImagem) Image4.PictureSizeMode = 3 End If End Sub Estava a funcionar bem até eu mudar o dirétorio da imagem. Agora, sempre que eu tenho correr a macro, diz-me que "não é possível carregar a imagem". Mesmo que eu volte a colocar o dirétorio antigo, acontece-me isso. Consegues perceber porquê? Obrigado pela ajuda. Cumprimentos
manuel antonio Posted March 25, 2018 at 02:17 AM Report #609915 Posted March 25, 2018 at 02:17 AM (edited) Boa noite. Não consigo sinceramente perceber o porquê. Em 23/03/2018 às 21:04, Douken disse: img = cc_box + ".jpeg" No VBA que eu conheço embora pouco, a concatenação de termos, faz-se com "&" e não com "+". Aqui, colocas o ficheiro com extensão .jpeg. Todas as imagens têm esta extensão? Não serão algumas .jpg por exemplo? Os nomes dos ficheiros, são 1,2,3,...n. Declaras : "Dim NomeImagem As String" e depois atribuis à variavel "NomeImagem" o valor de "img.Value". Não deveria ser "Text"? Edited March 25, 2018 at 02:38 AM by manuel antonio
Gnrtuga Posted March 25, 2018 at 06:20 AM Report #609916 Posted March 25, 2018 at 06:20 AM (edited) Boas, assim um bocadinho à pressa e sem tempo de ver como deve de ser, o erro deve de ser a falta da barra de separação entre o diretório e o nome da imagem... Boa sorte. NomeImagem = img.Value DiretorioImagem = "C:\PROGRAMA\FOTO" 'obtem o caminho completo da imagem CaminhoCompletoImagem = DiretorioImagem & NomeImagem 'caminho certo CaminhoCompletoImagem = DiretorioImagem & "\" & NomeImagem 'nota não sei se tem que ser com duas barras por se tratar de caracteres especiais Edited March 25, 2018 at 06:24 AM by Gnrtuga Falta de código Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
Douken Posted March 27, 2018 at 10:32 AM Author Report #609935 Posted March 27, 2018 at 10:32 AM Em 25/03/2018 às 03:17, manuel antonio disse: Boa noite. Não consigo sinceramente perceber o porquê. No VBA que eu conheço embora pouco, a concatenação de termos, faz-se com "&" e não com "+". Aqui, colocas o ficheiro com extensão .jpeg. Todas as imagens têm esta extensão? Não serão algumas .jpg por exemplo? Os nomes dos ficheiros, são 1,2,3,...n. Declaras : "Dim NomeImagem As String" e depois atribuis à variavel "NomeImagem" o valor de "img.Value". Não deveria ser "Text"? Em 25/03/2018 às 07:20, Gnrtuga disse: Boas, assim um bocadinho à pressa e sem tempo de ver como deve de ser, o erro deve de ser a falta da barra de separação entre o diretório e o nome da imagem... Boa sorte. NomeImagem = img.Value DiretorioImagem = "C:\PROGRAMA\FOTO" 'obtem o caminho completo da imagem CaminhoCompletoImagem = DiretorioImagem & NomeImagem 'caminho certo CaminhoCompletoImagem = DiretorioImagem & "\" & NomeImagem 'nota não sei se tem que ser com duas barras por se tratar de caracteres especiais Resultou! Obrigado pela ajuda. Vocês são impecáveis! Um abraço!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now