Como salvar imagens duplicadas no Excel para diferentes JPEGs

3

Eu tenho uma planilha do Excel com imagens que são armazenadas como objetos em uma coluna e nomes de produtos em outra. Eu estava tentando extrair todas as imagens para arquivos JPEG. Consegui isso salvando a planilha do Excel como um documento HTML.

Isso me deu os seguintes arquivos

  • Um arquivo HTML
  • Uma pasta com todas as imagens junto com um arquivo XML filelist.xml com uma lista de todos os arquivos de imagem

Agora, preciso criar uma nova planilha do Excel que tenha os nomes dos produtos em uma coluna e os nomes dos arquivos de imagem na outra. Consegui isso usando o arquivo XML criado filelist.xml.

No entanto, isso introduziu um novo problema

Minha folha de Excel original tinha certas variantes de produtos para, e. (Produto1 branco, Produto1 verde, Produto1 vermelho, Produto1 azul)

Embora os produtos tenham cores um pouco diferentes, o objeto de imagem associado foi repetido. Basicamente todos os quatro tinham a mesma imagem correspondente. Agora, ao salvar este arquivo como um HTML, encontrei apenas um arquivo de imagem em vez de quatro.

Além disso, o arquivo XML tinha apenas uma entrada em vez de quatro e, portanto, a nova planilha do Excel que estou criando a partir do XML também tem uma entrada em vez de quatro.

Embora o mesmo objeto seja usado quatro vezes para produtos semelhantes, eles parecem ser armazenados com nomes diferentes. (Clicando no primeiro mostrou "picture1", o segundo "picture2" etc). Isso me deu esperança de que talvez haja uma maneira de salvar imagens individualmente, então eu recebo quatro JPEGs em vez de um.

    
por TDsouza 26.07.2013 / 10:25

2 respostas

4

(ambas as soluções são superiores ao método de extração porque as imagens redundantes também são exportadas)

Solução # 1

Aqui está minha macro VBA para exportar todas as imagens de uma pasta de trabalho.
As imagens serão salvas em uma pasta de sua escolha e o nome do objeto interno do Excel será usado como nome do arquivo. O código é comentado e não tão difícil.

Sub ExportPictures()
    '## Open file dialog to choose a destination folder
    Set FOLDER = Application.FileDialog(msoFileDialogFolderPicker)
    FOLDER.AllowMultiSelect = False
    FOLDER.Show

    '## loop through all sheets and all pictures
    For Each WS In ThisWorkbook.Sheets
    For Each PIC In WS.Shapes

        '## create a chart with same dimensions as current picture
        '## subtract 0.5px from chart dimensions to avoid a strange border
        Set CH = WS.ChartObjects.Add(1, 1, PIC.Height, PIC.Width)

        '## save & temporarly disable the picture border
        PIC.Select
        PICBORDER = Selection.Border.LineStyle
        Selection.Border.LineStyle = 0

        '## copy the picture into chart. Only a chart could be exported
        PIC.Copy
        CH.Chart.ChartArea.Select
        CH.Chart.Paste

        '## re-enable the old picture border
        PIC.Select
        Selection.Border.LineStyle = PICBORDER

        '## export the chart as JPG. Change JPG to PNG if desired
        CH.Chart.Export Filename:=FOLDER.SelectedItems(1) & "\" & PIC.Name & ".jpg", FilterName:="JPG"

        '## delete chart to clean up our work
        CH.Cut

    Next PIC
    Next WS
End Sub

Como usar

  • Abra sua pasta de trabalho do Excel e o editor de VBA com Alt + F11
  • Cole o código em algum lugar e execute-o com F5 no editor

Recursos usados

Solução # 2

Use o Exportador de gráficos (suplemento do Excel)

This add-in will allow you to export pictures, shapes, charts and more to image files.

problemade64bits

Atémesmoa nova versão do Office 2007 é compilada para sistemas de 32 bits. Ele não será executado em um Windows de 64 bits, a menos que você corrija o código como explicado em Stackoverflow .
Eu fiz essas pequenas correções para você. Faça o download da versão de 64 bits aqui .

    
por 26.07.2013 / 22:32
0

Faça o download do OpenOffice ou de um melhor LibreOffice e instale-o. Você pode usar a versão instalar-em-um-bastão se não quiser mexer com seu sistema. Abra o documento no Calc. Salve como ods. Abra o Windows Explorer. Altere a extensão .ods para .zip. Em seguida, descompacte o arquivo. Existe uma pasta de imagens dentro de todas as imagens, com qualidade total, não dimensionada, provavelmente como PNG, que é de melhor qualidade que o JPEG.

PS: talvez a minha solução não seja exatamente o que você pediu, mas para mim esta é a maneira mais fácil de tirar todas as imagens de um documento do MS Office. Ele funciona para o Word também, provavelmente o Powerpoint também.

    
por 26.07.2013 / 10:29