2017-08-03 91 views
0

我們已經創建了一個電子表格,其中單元格的顏色等基於外部源的狀態(使用RSLinx的PLC標記)進行有條件的處理。我們寫了一個宏來拍攝特定範圍的屏幕截圖並將其保存爲JPG。然後,我們創建了一個網站來顯示電子表格的圖像,每隔30秒左右更新一次,以便對發生的事情進行「實時」表示。該宏如下圖所示:Excel宏屏幕截圖

Option Explicit 

Private Sub SaveRngAsJPG(Rng As Range, FileName As String) 
Dim Cht As Chart, bScreen As Boolean, Shp As Shape 
bScreen = Application.ScreenUpdating 
Application.ScreenUpdating = False 
Set Cht = Workbooks.Add(xlChart).Charts(1) 
Cht.ChartArea.Clear 
Rng.CopyPicture xlScreen, xlPicture 
Cht.Paste 
With Cht.Shapes(1) 
    .Left = 0 
    .Top = 0 
    .Width = Cht.ChartArea.Width 
    .Height = Cht.ChartArea.Height 
End With 


Cht.Export FileName, "PNG", False 
Cht.Parent.Close False 
Application.ScreenUpdating = bScreen 
End Sub 

Sub TestIt2() 
Dim Rng As Range, Fn As String 
Set Rng = Range("A3:AQ40") 
Fn = "C:\Users\Desktop\Website\LHImage.png" 
SaveRngAsJPG Rng, Fn 
End Sub 

我們遇到的問題是圖像保存的尺寸爲981x659。這扭曲了圖像,當我嘗試改變.width和.height線條的大小時,它會調整圖像的主體大小,但會將其周圍的空白區域縮小爲981x659的全部尺寸。

有沒有什麼辦法可以改變圖像的大小,在保存之前保持其長寬比?

任何幫助將不勝感激!

+1

爲什麼會有圖表參與?你不只是想獲得範圍的副本嗎? –

+0

是的,這正是我們需要做的,但由於我的宏觀技能不是最好的,我們不得不導致搜索谷歌的選項,這就是所有似乎執行正確的功能回來 – evorg88

+0

嘗試更改高度和寬度粘貼前。 –

回答

0

該方法會像您一樣創建一個圖表,並將您想要的範圍粘貼到圖表中。在chtemp.parent With循環中,更改尺寸以適合您的圖片的大小。可能需要玩一些。

dim rng as range 
dim chtemp as chart 
Set rng = Range("A3:AQ40") 
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture 
'--------------------------------------------------------- 
Charts.add 

'Creates a chart where the final picture will be moved on for picture export 
'----------------------------------------------------------------- 
ActiveChart.Location WHere:=xlLocationAsObject, Name:='Current worksheet'.Name 
    Set chtemp = ActiveChart 
    With chtemp.Parent 
     .Top = [Y1].Top 
     .Left = [Y1].Left 
     .Width = [Y10:AU55].Width 
     .height = [Y10:AU55].height 
    End With 

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

    chtemp.Paste 
    chtemp.Export Filename:='filename, FilterName:="png" 
    Application.DisplayAlerts = False 
+0

感謝您花時間回答。我剛剛嘗試過,但它只是在電子表格中將圖像顯示爲圖表而不將圖像保存到文件夾中。還有一部分圖片只是白色的。 – evorg88