pain88
Goto Top

Bild aus Excel per VBA exportiren

Hallo alle zusammen!

Gibt es eine Möglichkeit per VBA ein Excel Tabellenblatt nach einem Bild zu durchsuchen, das Bild soll dann in einem Vordefinierten Ordner abgespeichert werden, mit den Name (Inhalt aus Zelle A | Gleiches Tabellenblatt wo nach dem Bild gesucht worden ist).

Oder etwas ähnliches? Kann man sowas mit einen VBA Code bewältigen?

Danke und liebe Grüße

Content-ID: 624262

Url: https://administrator.de/contentid/624262

Ausgedruckt am: 17.11.2024 um 01:11 Uhr

godlie
godlie 20.11.2020 aktualisiert um 10:15:31 Uhr
Goto Top
Hallo,

ja das ist nicht ganz einfach, da ein direkter Export nicht vorgesehen ist, du musst dir über ein "temporäres" chart behelfen,
den Dateinamen musst du dir halt noch aus deinen Tabellenblattdaten holen

Sub LoopThroughImagesOnWs()

Dim shp As Shape
Dim ws As Worksheet

Set ws = ActiveSheet

For Each shp In ws.Shapes

    If shp.Type = msoPicture Then
 
    Set tempChartObj = ActiveSheet.ChartObjects.Add(0, 0, shp.Width, shp.Height)
    savePath = "C:\Users\user\Downloads\mySavedPic.jpg"  

    'Copy picture into chart, then export chart  
    shp.Copy

    tempChartObj.Chart.ChartArea.Select
    tempChartObj.Chart.Paste
    tempChartObj.Chart.Export savePath
    tempChartObj.Delete
 
    End If

Next shp

End Sub
pain88
pain88 20.11.2020 um 10:42:46 Uhr
Goto Top
Hallo godlie

Vielen Dank einmal,
Soweit funktioniert der Code.
Das Problem jetzt aber, da der Name nicht Variable ist wird das bestehende Bild immer wieder überschrieben :/
Außerdem soll das Bild und erstellte Chart nachher aus dem Tabellenblatt gelöscht werden. :/

Jedenfalls Danke vielmals face-smile
godlie
Lösung godlie 20.11.2020 um 10:53:49 Uhr
Goto Top
Hallo,
der erstelle Chart sollte eig. über tempChartObj.delee wieder verschwinden. hab leider kein Excel da zum testen aber das müsste so in die Richtung gehen:

Sub LoopThroughImagesOnWs()

Dim shp As Shape
Dim ws As Worksheet

Dim tempChartObj As ChartObject
Dim savePath,cellValue,sheetValue As String

Set ws = ActiveSheet

For Each shp In ws.Shapes

    If shp.Type = msoPicture Then

        Set tempChartObj = ActiveSheet.ChartObjects.Add(0, 0, shp.Width, shp.Height)
        cellValue = Range("A1").Value  
        sheetValue = ActiveSheet.Name
        saveName = cellValue & sheetValue & ".jpg"  
        savePath = "C:\Users\user\Downloads\" & saveName  

        'Copy picture into chart, then export chart  
        shp.Copy

        tempChartObj.Chart.ChartArea.Select
        tempChartObj.Chart.Paste
        tempChartObj.Chart.Export savePath
        tempChartObj.Delete
 
    End If

Next shp

End Sub
pain88
pain88 20.11.2020 um 11:12:04 Uhr
Goto Top
Hallo,

leider passiert bei dem Code nichts.
Also ich habe mein Pfad angepasst, es kommt keine Fehlermeldung aber in meinen Ordner ist auch kein Bild. :/
godlie
godlie 20.11.2020 um 11:14:24 Uhr
Goto Top
Hallo,

ja dann ab in den Debugmodus face-smile

Hast du die cellValue <-- Range angepasst, an deine Zelle?
Wird der ActiveSheet.Name richtig gelesen?
wie sieht der saveName u savePath aus.......

das zu fixen ist jetzt nicht mehr schwierig
pain88
pain88 20.11.2020 um 11:43:29 Uhr
Goto Top
Hallo,

Ehrwürdig vielen vielen Dank.
Der Fehler war das ich blind den Ordnerpfad kopiert habe.

savePath = "C:\Users\Trumic\Desktop\ExcelBilder" & saveName

Hinten hat ein '\' gefehlt so das das Bild auf dem Desktop gelandet ist mit dem Namen "ExcelBilder&A1&TabellenName"

Vielen Vielen Dank
liebe Grüße face-smile