2017-02-07 6 views
0

Ich versuche, in Excel eine jpg-Datei aus einem bestimmten Bereich zu bekommenVBA - Range jpg Bild

ich zur Zeit immer die

1004 Laufzeitfehler auf Range-Methode von _Worksheet Objekt.

Dies ist, was mein Code wie folgt aussieht:

Sub Export() 
Dim ws As Worksheet 
Dim Rng As Range 
Dim Chrt As Chart 
Dim ExportPath As String 

Set ws = ActiveSheet 
Set Rng = ws.Range("B2:H11") 
ExportPath = ThisWorkbook.Path & "\Case.jpg" 

Set Chrt = ThisWorkbook.Charts.Add 
Rng.CopyPicture xlScreen, xlBitmap 

With Chrt 
    .Paste 
    .Export FileName:=ExportPath, Filtername:="JPG" 
End With 
End Sub 
+0

Sie müssen den Pfad angeben '.Export FileName =" C: \ Case.jpg ", Filtername: =" JPG "' – R3uK

+0

Wird es nicht in den Pfad wo speichern Die Excel-Datei befindet sich für den Fall, dass ich es nicht angeben? – IAIAIA

+1

Sie sollten auch 'Set Rng = Range (" B2: H11 ")' in 'Set Rng = ws.Range (" B2: H11 ")' und dann 'ws.Range (Rng) .CopyPicture' in' rng ändern. KopieBild'. –

Antwort

1

Der Hauptfehler @J_Lard erwähnte bereits in:

Sub Export() 

Dim ws As Worksheet 
Dim Rng As Range 
Dim Chrt As Chart 

Set ws = ActiveSheet 
Set Rng = Range("B2:H11") 

ws.Range(Rng).CopyPicture 
Set Chrt = Charts.Add 

With Chrt 
    .Paste 
    .Export FileName = "Case.jpg", Filtername:="JPG" 
End With 

End Sub 
+0

Danke, das hat es funktioniert. Welches Format würden Sie mir empfehlen, um es zu exportieren, damit ich die beste Bildqualität bekommen kann, da es für einen Bericht ist? – IAIAIA

+0

Hm, es kommt darauf an ;-). Mein Favorit ist definitiv PNG. Verwenden von 'xlPicture' anstelle von' xlBitmap' habe ich bereits zur Verfügung gestellt. Aber auch das hängt davon ab. Probieren Sie verschiedene Formate aus, vergleichen Sie die Ergebnisse und wählen Sie aus, was Ihrer Meinung nach das Beste ist. –

+0

Ausgezeichnet, danke für Ihre Hilfe. – IAIAIA

0

Hier wird, wie in dem gleichen Weg wie die Arbeitsmappe exportieren sein Kommentar.

Aber ich würde ChartObject eher als ein Chart Blatt verwenden. Damit können Sie die Größe der Ausgabe bestimmen, anstatt den gesamten Diagrammbereich im Bild zu sehen.

Und während F8 Schritt die Paste und den Export wird funktionieren, während Echtzeit ausgeführt wird, muss die ChartObject aktiviert werden.

Sub Export() 

Dim oWs As Worksheet 
Dim oRng As Range 
Dim oChrtO As ChartObject 
Dim lWidth As Long, lHeight As Long 

Set oWs = ActiveSheet 
Set oRng = oWs.Range("B2:H11") 

oRng.CopyPicture xlScreen, xlPicture 
lWidth = oRng.Width 
lHeight = oRng.Height 

Set oChrtO = oWs.ChartObjects.Add(Left:=0, Top:=0, Width:=lWidth, Height:=lHeight) 

oChrtO.Activate 
With oChrtO.Chart 
    .Paste 
    .Export Filename:="Case.jpg", Filtername:="JPG" 
End With 

oChrtO.Delete 

End Sub 

Wenn der Pfad nicht angegeben wird, die Case.jpg wird Speicherort in Standard gespeichert werden. Dies ist wahrscheinlich Ihr Benutzerdokumente Verzeichnis C:\Users\YourName\Documents\

+0

Jetzt erzeugt es ein leeres Blatt in Excel (wo ich vermute, dass das Diagramm angezeigt werden sollte) und eine Datei mit dem Namen "False" im Verzeichnis. So sieht das Excel-Blatt aus: http://i.imgur.com/NsqNrdN.jpg Könnte dies wegen der kombinierten Zellen verursacht werden? – IAIAIA

+0

@IAIAIA: Ich habe den Code bearbeitet, probieren Sie es aus! ;) – R3uK

+0

Großartig, jetzt bekommen wir das Bild mit dem Namen und der Erweiterung erwartet, aber es zeigt immer noch leer sowohl in Excel und der .jpg:/ – IAIAIA

Verwandte Themen