2017-04-25 783 views
0

我試圖通過在後臺單擊帶有VBA代碼的按鈕直接從Excel工作表中自動生成小尺寸屏幕截圖。這是的情況:在Excel VBA中截圖並保存在一個單獨的文件中

我必須採取單元格G1:I12截圖,並將其保存在名爲scrt.png的文件名 。截圖的尺寸應爲cellrange G1的保持完全相同:I12

從早先的職位之一,我發現這個代碼,似乎首先包括上述範圍的截圖到一個新的工作ChartSheet,然後它將scrt.png文件成功保存在所提及的位置。本質上,它成功地在ChartSheet中生成所選單元格區域的位圖,並在所提及的位置生成單獨的scrt.png文件。 但是,代碼的問題是創建的scrt.png文件具有整個ChartSheet屏幕截圖。我正在尋找的僅僅是提到的單元格區域捕捉保存的文件。 試圖調整代碼,但沒有成功。任何幫助將不勝感激。

Sub Macro1() 
    myFileName = "scrt.png" 
    Range("G1:I12").Select 
    Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture 

    Charts.Add 
    ActiveChart.Paste 
    ActiveChart.Export Filename:=ThisWorkbook.Path & "\" & myFileName, Filtername:="PNG" 
End Sub 

非常感謝。

回答

0

而不是使用圖表工作表中,使用嵌入式chartObject定期工作 - 那麼你可以粘貼前調整它在複製的範圍影像

Sub Tester() 

    ExportRange Selection, "C:\_Stuff\test\scrt.png" 

End Sub 


Sub ExportRange(rng As Range, sPath As String) 

    Dim cob, sc 

    rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture 

    Set cob = rng.Parent.ChartObjects.Add(10, 10, 200, 200) 
    'remove any series which may have been auto-added... 
    Set sc = cob.Chart.SeriesCollection 
    Do While sc.Count > 0 
     sc(1).Delete 
    Loop 

    With cob 
     .Height = rng.Height 
     .Width = rng.Width 
     .Chart.Paste 
     .Chart.Export Filename:=sPath, Filtername:="PNG" 
     .Delete 
    End With 

End Sub 
+0

由於一噸@TimWilliams。這完美的作品! +1 – user6337701

相關問題