Herbers Excel-Forum - das Archiv

Bereich als Bild speichern.

nach unten


Betrifft: Bereich als Bild speichern.
von: Marlo

Geschrieben am: 24.09.2019 14:50:04

Hallo liebe Excel-Freunde,
Ich habe vor, einen bestimmten Bereich als Bild an einem Ort abzuspeichern.
Ich habe das ganze bereits hier gefunden:
https://www.herber.de/forum/archiv/1128to1132/1130567_Grafik_oder_Bereich_mit_VBA_als_Bild_speichern.html
Da ich noch VBA-Anfänger bin, habe ich den zweiten Code benutzt. Dieser sah für mich leichter aus.
Leider speichert sich das Bild in weiß und ohne Inhalt ab.
In folgender Quelle wurde dann vorgeschlagen, eine leichte Änderung vorzunehmen.
http://www.office-loesung.de/ftopic568394_0_0_asc.php
Dies funktioniert leider auch nicht. Kennt ihr da noch eine weitere Möglichkeit?
Optimalerweise soll das Bild als PNG/JPG abgespeichert werden.
Vielleicht könnt Ihr mir dabei helfen. :)
Vielen Dank schonmal,
Mit freundlichen Grüßen
Marlo

Betrifft: AW: Bereich als Bild speichern.
von: Torsten
Geschrieben am: 24.09.2019 15:02:22
Hallo Marlo,
kann ich nicht nachvollziehen. Habe den Code bei mir getestet. Laeuft.
Du musst natuerlich im Code den Tabellennamen anpassen von dem du das Bild machst. Viellecht ist die Tabelle leer, von der DU das Bild machst?
Gruss Torsten

Betrifft: AW: Bereich als Bild speichern.
von: Marlo

Geschrieben am: 24.09.2019 15:28:37
Hallo Torsten,
mein aktueller Code sieht folgendermaßen aus:
Option Explicit
Sub Range_To_Image()
Dim objPict As Object, objChrt As Chart
Dim rngImage As Range, strFile As String
On Error GoTo ErrExit
With Sheets("KW") 'Tabellenname - Anpassen!'
Set rngImage = .Range("B1:I24")
rngImage.CopyPicture Appearance:=xlScreen, Format:=xlPicture
.PasteSpecial Format:="Bitmap", Link:=False, DisplayAsIcon:=False
Set objPict = .Shapes(.Shapes.Count)
strFile = "C:\Tempexc\Migration.jpg" 'Pfad und Dateiname für das Bild'
objPict.Copy
Set objChrt = .ChartObjects.Add(1, 1, objPict.Width, objPict.Height).Chart
objChrt.Paste
objChrt.Export strFile
objChrt.Parent.Delete
objPict.Delete
End With
ErrExit:
Set objPict = Nothing
Set objChrt = Nothing
Set rngImage = Nothing
End Sub
Sowohl Tabellenname als auch Bereiche habe ich angepasst.
Den ausgewählten Bereich habe ich hier angehängt:
Userbild
Grüsse
Marlo

Betrifft: AW: Bereich als Bild speichern.
von: Nepumuk

Geschrieben am: 24.09.2019 18:17:07
Hallo Marlo,
teste mal:
Option Explicit

Public Sub Range_To_Image()
    
    Const FILE_PATH As String = "C:\Tempexc\Migration.jpg" 'Pfad und Dateiname für das Bild'
    
    Dim objChrt As Chart
    Dim rngImage As Range
    
    With Worksheets("KW") 'Tabellenname - Anpassen!'
        
        Set rngImage = .Range("B1:I24")
        
        rngImage.CopyPicture Appearance:=xlScreen, Format:=xlPicture
        
        Set objChrt = .ChartObjects.Add(1, 1, rngImage.Width, rngImage.Height).Chart
        
        With objChrt
            .Parent.Activate
            .Paste
            .Export FILE_PATH, "JPG"
            .Parent.Delete
        End With
    End With
    
    Set objChrt = Nothing
    Set rngImage = Nothing
End Sub

Gruß
Nepumuk

Betrifft: AW: Bereich als Bild speichern.
von: Marlo
Geschrieben am: 25.09.2019 09:05:53
Hallo Nepumuk,
das sieht super aus. Funktioniert einwandfrei!
Vielen vielen lieben Dank!

Betrifft: Warum dann offen? owt
von: Torsten
Geschrieben am: 25.09.2019 09:09:09

Betrifft: AW: Warum dann offen? owt
von: Marlo

Geschrieben am: 26.09.2019 14:24:44
Ich habe das Häckchen wohl fälschlicherweise gesetzt. Dachte es wäre sowas wie eine Zustimmung zur Verarbeitung :D
Häckchen ist jetzt nicht mehr gesetzt. Sollte also geschlossen sein.

Betrifft: wieder offen
von: Torsten
Geschrieben am: 24.09.2019 15:28:40
Ich nehms zurueck.
Du hast recht. Wenn ich den Code normal durchlaufen lasse, kommt bei mir auch nur ein weisses Feld mit Rand raus.
Vorher hab ichs im Einzelschrittmodus gemacht. Da hats funktioniert. Merkwuerdig.
Wieder offen.
Gruss

Excel-Beispiele zum Thema "Bereich als Bild speichern."
Leerzeichen aus einem Bereich löschen Befindet sich die aktive Zelle in einem bestimmten Bereich?
Mehrbereichsauswahl auf eine Seite drucken. Spalten einer Mehrbereichsauswahl ausblenden.
Bereich mit Maximalwert markieren Benannten Bereich erweitern
Bereich in RefEdit-Element eingeben und auslesen Benutzerdefinierte SVERWEIS-Funktion über mehrere Bereiche
Letzter Wert aus einem Bereich Bereiche bei Mehrfachauswahl prüfen