鋼板計算器的傳奇仍在繼續。所有的計算工作都非常好,在很大程度上要歸功於您在SO上的大量工作,但在最終導出階段,我發現如果源文件不再打開,顯示利用率優化的圖表會丟失其數據。試圖將Excel中的圖表轉換爲圖片以將該圖紙從其源數據中導出
我正在尋找一種方法來保持圖形在導出後保持靜態,理想情況下無需複製數據字段。理想的做法是將其轉換爲圖片,並保持其位置和大小。
我發現this這裏如此,但它會創建一個新的圖形形狀,顯然格式化爲一個餅圖:
Sub PasteGraph2()
Dim ws As Worksheet
Dim cht As Chart
Set ws = ActiveSheet
Set cht = ws.Shapes.AddChart.Chart
With cht
.SetSourceData ws.Range("$B$21:$C$22")
.ChartType = xl3DPie
.ChartArea.Copy
End With
ws.Range("A2").PasteSpecial xlPasteValues
cht.Parent.Delete
End Sub
我也試過這一點,簡報宏的網站上發現和修改,以適應,但毫不奇怪,它在Excel中不起作用(「ppPastePNG - 變量未定義」)。
Sub PasteGraph1()
' PasteGraph Macro
Dim oGraph As Shape
Dim oGraphPic As Shape
Dim dGrpLeft As Double
Dim dGrpTop As Double
oGraph = ActiveSheet.ChartObjects("Chart 3").Copy
dGrpLeft = oGraph.Left
dGrpTop = oGraph.Top
oGraph.Copy
ActiveSheet.Shapes.PasteSpecial DataType:=ppPastePNG
Set oGraphPic = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
oGraph.Delete
oGraphPic.Left = dGrpLeft
oGraphPic.Top = dGrpTop
End Sub
後者(PasteGraph1
)似乎更適合我的目的,但我該如何使它工作?有一種更簡單的方法嗎?
我在''.Paste'行發現「不支持此屬性或方法」錯誤。其餘的工作很好(我把它與上面的'PasteGraph1'結合起來,這似乎工作得很好) - 我必須手動粘貼它,然後恢復處理宏。我已經刪除了'Cells(1,1)'位,現在它似乎工作。 –
順便說一句,任何想法如何保持(推測)基於矢量的圖表的銳利邊緣?位圖有點模糊 - 完全適合我的目的,但如果我能整理它,它會很好。 –
@AndrewPerry也許使用另一個'CopyPicture'選項,參見[this](https://msdn.microsoft.com/fr-fr/library/office/ff841052.aspx) – ZwoRmi