मैं अपने स्थानीय फ़ाइल में निर्यात करने की कोशिश कर रहा हूँ aएक्सेल रेंज को इमेज (PNG) (इसे नाम दिया गया है: टैब पर "Print_Area" "सारांश" रेंज: P1: 992)। कार्यक्रम अच्छी तरह से चलता है, हालांकि जब मैं फ़ाइल खोलता हूं तो सभी कल्पनाएं खाली होती हैं यहाँ कोडिंग है जो मैं उपयोग कर रहा हूँ:
Sub _Daily_Mail()
Dim Rango7 As Range
Dim Archivo As String
Dim Imagen As Chart
Dim Result As Boolean
Set Rango7 = Sheets("Summary").Range("P2:AI92") " Summary
Sheets("Summary").Select
With Rango7
.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Set Imagen = Rango7.Parent.ChartObjects.Add(33, 39, .Width, .Height).Chart
End With
Imagen.Paste
Imagen.ChartArea.Border.LineStyle = 0
Imagen.ChartArea.Width = Imagen.ChartArea.Width * 3
Imagen.ChartArea.Height = Imagen.ChartArea.Height * 3
Imagen.export "C:UsersmelyDocumentsImagenes_POSInforme1.png", filtername:="PNG"
Imagen.Parent.Delete
Set Imagen = Nothing
उत्तर:
उत्तर № 1 के लिए 1Excel 2016 में आपको उपयोग करने की आवश्यकता है। पेस्ट ऑपरेशन से पहले कमांड को सक्रिय करें। उदाहरण:
Set rng = Range("A1:C1")
With rng
.CopyPicture xlPrinter, xlPicture
Set oChart = ActiveSheet.ChartObjects.Add(.Left, .Top, 1920, 1080)
oChart.Activate
With oChart.Chart
.ChartArea.Border.LineStyle = 0
.Paste
.Export Filename:="C:File.jpg", Filtername:="jpg"
.Parent.Delete
End With
End With
जवाब के लिए 0 № 2
मैं कार्यालय 2016 के साथ इसी मुद्दे पर चल रहा हूं। यह एक टाइमिंग मुद्दा प्रतीत होता है। चार्ट ऑब्जेक्ट बनाते समय और उसे पेस्ट करने में सक्षम होने के नाते। यदि मैं कोड के माध्यम से कदम रखता हूं तो यह अपेक्षित रूप से काम करता है और मेरी छवि उत्पन्न करता है।
मैं एक तय के साथ आया था जो काम करता है: किसी कारण से पेस्ट को कॉल करने से पहले चार्ट के मूल आकार को चुनने से समस्या ठीक हो जाती है।
Function CopyRangeToPNG(ByRef rngImage As Range) As String
Dim vFilePath As Variant
rngImage.CopyPicture Appearance:=xlScreen, Format:=xlPicture
With rngImage.Parent.ChartObjects.Add( _
Left:=rngImage.Left, Top:=rngImage.Top, _
Width:=rngImage.Width + 2, Height:=rngImage.Height + 2)
With .Chart
.Parent.Select
.ChartArea.Format.Line.Visible = msoFalse
.Paste
With .Pictures(1)
.Left = .Left + 2
.Top = .Top + 2
End With
" export
.Export CStr(ThisWorkbook.Path & "ImageName.PNG")
End With
.Delete
End With
CopyRangeToPNG = ThisWorkbook.Path & "ImageName.PNG"
End Function