Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Excel: Diagramm als .bmp abspeichern und ...


Betrifft: Excel: Diagramm als .bmp abspeichern und ... von: Kai Thiel
Geschrieben am: 14.09.2017 13:18:18

Hallo liebe Leute, ersteinmal muss ich sagen das ihr hier wirklich großartige Hilfe leistet, Hut ab, meinen Respekt dafür!

Ich habe folgende Problemstellung, ich möchte aus Excel ein markiertes Diagramm als .bmp (oder vllt später auch als .jpg oder .png ) abspeichern. Anschließend soll die abgespeicherte Datei in die allgemeine Zwischenablage kopiert werden, damit ich diese manuell (das ist wichtig) wieder in ein Word Dokument einfügen kann.

Ziel ist es, aus einer Excel Datei in der sich viele Diagramme befinden, diese eines nach dem anderen anzuklicken, dann wird die Bilddatei abgelegt und diese in die Zwischenablage kopiert, in Word habe ich dann ja im Linken Fensterabschnitt alle in der Zwischenablage liegenden Bilder und kann diese nach und nach dort im Word einfügen.

Das hier ist bis jetzt mein Code, den ich mir aus anderen Beiträgen hier im Forum _
zusammengeklaubt habe.


Sub Export()

  Dim strGrafikName As String
  Dim strPfad As String
  Dim strDatei As String

  strPfad = ThisWorkbook.Path
  strDatei = ActiveSheet.Name & ".bmp"
  strGrafikName = strPfad & "\" & strDatei
  
  On Error GoTo ErrorHandler
  ActiveChart.Export Filename:=strGrafikName, FilterName:=Right(strGrafikName, 3)
  
'Grafik in die Zwischenablage einfügen
    
'  Clipboard.SetData LoadPicture("C:\Users\thielk2\Desktop\Tabelle1.bmp"), vbCfBitmap
  Clipboard.SetData LoadPicture(ThisWorkbook.Path & " \ " & strGrafikName), vbCfBitmap

' Ende Testcode
  
  Exit Sub

ErrorHandler:
  If Err.Number = 91 Then
    MsgBox "Export nicht möglich. " & _
    "Sie haben kein Diagramm ausgewählt.", _
    vbCritical + vbOKOnly, _
    "Diagramm als Grafik exportieren"
  Else
    MsgBox "Der folgende Fehler ist aufgetreten: " & _
    Err.Number & " - " & Err.Description, vbCritical + _
    vbOKOnly, "Diagramm als Grafik exportieren"
  End If
End Sub

Ich bekomme nun die Fehlermeldung,

"Fehler beim Zugriff auf Pfad/Datei"

weil ich dort wahrscheinlich irgendwie Syntax Murks gebaut habe, bin wie gesagt leider totaler Anfänger, aber selbst wenn ich den Pfad direkt angebe wie im auskommentierten Teil, dann bekomme ich die Fehlermeldung,

"424 - Objekt erforderlich"

Ich weiß leider nicht was ich falsch mache und wie ich weiter komme.
Könnte mir einer von euch vielleicht aushelfen und meinen Code komplettieren, bei beiden Problemen?
Das der Pfad automatisch richtig erkannt wird und das das Bild danach in die Zwischenablage kommt,
damit ich es danach mit Strg+V in Word einfügen kann, bzw. dort aus der Zwischenablage-Liste auswählen kann?

Vielen, vielen Dank bereits im voraus!

MfG
Euer Kai

  

Betrifft: AW: Excel: Diagramm als .bmp abspeichern und ... von: Michael (migre)
Geschrieben am: 14.09.2017 13:55:54

Hallo!

Ich bin mir jetzt nicht ganz sicher was Du brauchst, Deiner Beschreibung folgend, aber wenn es Dir nur darum geht, dass Du mittels Makro das gerade markierte Diagramm kopieren willst, um es in Word (zB per [Strg] + [V]) einzufügen, dann reicht das:

Sub a()
    ActiveChart.CopyPicture
End Sub
Wenn Du ein Diagramm markiert hast und diesen Code ausführst, kannst Du in Word, wie oben beschrieben, das Diagramm-Bild einfügen.

LG
Michael


  

Betrifft: AW: Excel: Diagramm als .bmp abspeichern und ... von: Kai Thiel
Geschrieben am: 14.09.2017 14:01:10

So einfach kann ich es mir nicht machen. Daher habe ich ja meinen beinahe funktionierenden Code auch gepostet...

Es ist so das es sich um ca 50 Diagramme mit jeweils über 30.000 einzelwerten handelt. Wenn ich die Diagramme einfach ins Word kopiere, dann wird die Word Datei schnell über 300 Mb groß und was das es geht nichts mehr außer das das Programm abstürzt, damit arbeiten kann man nicht mehr!

Daher der Umweg das Diagramm vorher als .bmp abzuspeichern,

Das funktioniert mit meinem Code ja auch schon.

Das Bild ist dann im Order wo die Excelfile liegt vorhanden.


Jetzt muss nur noch die abgelegte .bmp Datei wieder in die Zwischenablage eingelesen werden, damit ich das nicht von Hand machen muss.

Ich hoffe ich konnte es jetzt besser beschreiben?
MfG
Kai


  

Betrifft: Jemand anderer? Denn... von: Michael (migre)
Geschrieben am: 14.09.2017 14:44:15

...da wird's vermutlich API brauchen, ist nicht mein Metier.
Allerdings ist mir auch noch nicht klar, wie diese Vorgehensweise die Dateigröße gering halten soll...

LG
Michael


  

Betrifft: AW: Jemand anderer? Denn... von: Kai Thiel
Geschrieben am: 14.09.2017 14:51:13

Es sieht so aus, ein Diagramm, das als Bitmap abgespeichert wurde, ist wenige KB groß. Dieses Bitmap wurde aus einem Excel File heraus in einem Order gespeichert und soll in der Zwischenablage verfügbar sein. (Dies soll das Makro ermöglichen, der Teil mit dem abspeichern funktioniert ja auch schon, nur nicht das anschließende laden in die Zwischenablage).

Dann öffne Ich meine Word Datei, in dem Ich meinen Bericht verfasse, in dieses Word Dokument kopiere ich das Bitmap aus der Zwischenablage - Kleine Word Datei erreicht, da nur Bitmap Bilder darin sind.

Die Excel Datei ist natürlich wahnsinnig groß, weil Sie die ganzen Rohdaten enthält, aber das ist kein Problem.


Beiträge aus den Excel-Beispielen zum Thema "Excel: Diagramm als .bmp abspeichern und ..."