Pergunte aqui
0

Macro inserir e deletar foto

perguntadas 2020-02-05 23:40:27 +0100

imagem do gravatar de Raposo

updated 2020-02-06 00:18:59 +0100

Gostaria de ajuda com essa macro. Esta dando erro na linha:

oDrawPage = oDoc.getSheets().getByName("Planilha1").getDrawPage()

Segue macro:

Sub AddImg

    Dim GraphicObjectShape As Object
    Dim Point As New com.sun.star.awt.Point
    Dim Size As New com.sun.star.awt.Size
    Dim Page As Object
    Dim oImg as String

    oDoc = ThisComponent
    Page = oDoc.DrawPages(0) 'Posição da planilha no seu arquivo. Planilha1 = 0
    oPlan = oDoc.Sheets.getByName("Planilha1")

    'Pode ser utilizado qualquer uma das duas linhas abaixo. Para trocar, retire o apostrofe (') da linha de códido a frente
    'Caso escolha colocar o link de acesso da imagem aqui dentro, é necessário alterar o endereço
    'oImg = oPlan.getCellRangeByName("A1").String 'Aqui pega o link da célula
     oImg = "C:\MC\" & oPlan.getCellRangeByName("A1").String & ".jpg" 'Aqui pega o nome da célula

    Call DeletaImg

    Point.x = 1000 'Posição X da planilha
    Point.y = 1000  'Posição Y da planilha
    Size.Width = 2000   'Largura da imagem
    Size.Height = 2000  'Altura da imagem

    GraphicObjectShape = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")

    GraphicObjectShape.Size = Size
    GraphicObjectShape.Position = Point

    GraphicObjectShape.GraphicURL = ConvertToUrl(oImg)

    Page.add(GraphicObjectShape)

End Sub

Sub DeletaImg()
'Fonte: https://stackoverflow.com/questions/46048667/how-to-delete-all-images-from-all-sheets-of-a-libreoffice-calc-workbook

    Dim oDrawPage As Object
    Dim oShape As Object

        oDrawPage = oDoc.getSheets().getByName("Planilha1").getDrawPage()
            oShape = oDrawPage.getByIndex(1) 'sempre será a última imagem
            oDrawPage.remove(oShape)

End Sub
editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

1

respondidas 2020-02-06 12:13:17 +0100

imagem do gravatar de Conrado

updated 2020-02-06 12:14:55 +0100

@gilberto schiavinatto e @Raposo

Faltou

    Dim oDoc as Object
    oDoc = ThisComponent

    Sub DeletaImg()

'Fonte: https://stackoverflow.com/questions/46048667/how-to-delete-all-images-from-all-sheets-of-a-libreoffice-calc-workbook    

        Dim oDoc as Object
        Dim oDrawPage As Object
        Dim oShape As Object
        Dim oDoc as Object

            oDoc = ThisComponent

            oDrawPage = oDoc.getSheets().getByName("Planilha1").getDrawPage()
                oShape = oDrawPage.getByIndex(1) 'sempre será a última imagem
                oDrawPage.remove(oShape)
    End Sub
editar assinalar como ofensivo Excluir Link mais

Comentários

1

Ola @Conrado, resumindo

Sub DeletarUltimaImagemInserida   'Identificar a Planilha.
'================================================|
ThisComponent.getSheets().getByName("Planilha1").getDrawPage() _
.remove( ThisComponent.getSheets().getByName("Planilha1").getDrawPage().getByIndex(1))
End Sub
imagem do gravatar de SchiavinattoSchiavinatto ( 2020-02-06 13:29:25 +0100 )editar

Funcionou os dois, só que eles removem todos os objetos da planilha

imagem do gravatar de RaposoRaposo ( 2020-02-06 23:30:11 +0100 )editar

@Raposo, poste aqui seu arquivo se possível, pois eu realizei teste aqui, e ele remove sempre a última imagem posta na planilha. Sua macro está executando repetidas vezes?

imagem do gravatar de ConradoConrado ( 2020-02-07 16:03:19 +0100 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2020-02-05 23:40:27 +0100

Lidas: 17 vezes

Última atualização: Feb 06