Notifications
Clear all

Redimensionar imagem automaticamente

14 Posts
3 Usuários
0 Reactions
2,430 Visualizações
(@macsof)
Posts: 48
Eminent Member
Topic starter
 

Olá, pessoal,

Obrigado pela vossa paciência.
Numa planilha, tenho células com o mesmo tamanho, para inserir fotos que vou tirando.
Quando selecciono a célula onde vou inserir a foto, vou a inserir, imagem, escolho a foto e ela vai para a célula antecipadamente escolhida, mas muito grande, alinhando pela esquerda e por cima.
Eu precisava que ela mantivesse o alinhamento à esquerda e por cima, mas que entrasse já com a dimensão da célula previamente selecionada, sem eu ter que andar a formatá-la nas opções de formatação, ou com o rato.
É possível?
Obrigado

 
Postado : 14/12/2015 8:01 am
(@mprudencio)
Posts: 2749
Famed Member
 

Em Excel nao creio pq a imagem é um objeto externo, e que vc precisa ter a mesma salva ja no tamanho desejado.

Não creio que o excel tenha condiçoes de redimensionar a imagem sozinho.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 14/12/2015 8:23 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

A imagem já consta na planilha ? Pode mostrar um modelo/exemplo

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/12/2015 8:48 am
(@macsof)
Posts: 48
Eminent Member
Topic starter
 

Olá, Reinaldo, obrigado.
Não, ela não consta da planilha. Será inserida caso a caso.
Anexo foto.
Obrigado

 
Postado : 14/12/2015 10:53 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não consegui entender qual o procedimento para inserir a imagem, todavia experimente:

  For Each sh In ActiveSheet.Shapes
    ActiveSheet.Shapes.Range(Array(sh.Name)).Select
        With Selection
            .Top = sh.TopLeftCell.Top
            .Left = sh.TopLeftCell.Left
            .ShapeRange.Height = sh.TopLeftCell.Height '14.25
            .ShapeRange.Width = sh.TopLeftCell.Width '19.5
        End With
    Next

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/12/2015 6:28 am
(@macsof)
Posts: 48
Eminent Member
Topic starter
 

Olá, muito obrigado pela resposta.
Eu não sei usar VBA. Porém, penso que fiz tudo bem, e dá o erro que pode ver na foto anexada.

 
Postado : 15/12/2015 7:58 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

É preciso criar um nome para a rotina

algo +/- assim:

  Sub Ordena()
For Each sh In ActiveSheet.Shapes
    ActiveSheet.Shapes.Range(Array(sh.Name)).Select
        With Selection
            .Top = sh.TopLeftCell.Top
            .Left = sh.TopLeftCell.Left
            .ShapeRange.Height = sh.TopLeftCell.Height '14.25
            .ShapeRange.Width = sh.TopLeftCell.Width '19.5
        End With
    Next
end sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/12/2015 8:03 am
(@macsof)
Posts: 48
Eminent Member
Topic starter
 

Muito obrigado.

Agora dá outro erro, o run time 91.
Quando faço o debug, dá o erro da foto 2

Tenha paciência...

 
Postado : 15/12/2015 9:37 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pode disponibilizar sua planilha, altere dados para fictícios se necessário; porem que seja representativa do layout da mesma

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/12/2015 11:23 am
(@macsof)
Posts: 48
Eminent Member
Topic starter
 

Concerteza, não tenho problemas.
Vai em baixo.
Obrigado

 
Postado : 15/12/2015 12:04 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Existem outra "shapes" em seu arquivo e o tamanho da imagem corresponderão a varias celulas mesclada
Então exeprimente assim

Sub AjustaTamanho()
For Each sh In ActiveSheet.Shapes
    If sh.Name Like "*Pict*" Then
    ActiveSheet.Shapes.Range(Array(sh.Name)).Select
        With Selection
            .Top = sh.TopLeftCell.Top
            .Left = sh.TopLeftCell.Left
            .ShapeRange.Height = 54
            .ShapeRange.Width = 74.25
        End With
    End If
    Next
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/12/2015 10:05 am
(@macsof)
Posts: 48
Eminent Member
Topic starter
 

Obrigado pela sua resposta.
Ao tentar criar a função, no VBA, quando carrego na "seta" verde (run), não acontece nada.
Acho que eu já devo até ter estragado o meu VBA.
Acho que vou tentar aprender VBA, para não fazer mais asneiras.

 
Postado : 16/12/2015 10:53 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Segue em anexo o seu arquivo modificado.
Clique no botão Ajuste e veja se executa
Obs.: Desculpe deletei sua MP sem responder, porem não tenho Team Viewer

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/12/2015 11:43 am
(@macsof)
Posts: 48
Eminent Member
Topic starter
 

Muito obrigado!
Resolveu mesmo.

Não está seguindo o meu pedido de ajuda em viewtopic.php?f=29&t=18504 ?
Talvez me possa ajudar também lá.

Mas agradeço desde já muito esta solução.

 
Postado : 16/12/2015 12:19 pm