Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Image
BildScreenshot zu Image Image-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

Bereich als Bild speichern.


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:



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