我有一个工作的Excel VBA宏做什么,我想从这里 ,我试图将其转换为VB.NET。
从VBA代码:
Sub bah()
''' Set Range you want to export to file
Dim rgExp As Range: Set rgExp = Range("B2:C6")
''' Copy range as picture onto Clipboard
rgExp.CopyPicture Appearance:=xlScreen, format:=xlBitmap
''' Create an empty chart with exact size of range copied
With ActiveSheet.ChartObjects.Add(Left:=rgExp.Left, Top:=rgExp.Top, _
Width:=rgExp.Width, Height:=rgExp.Height)
.Name = "ChartVolumeMetricsDevEXPORT"
.Activate
End With
''' Paste into chart area, export to file, delete chart.
ActiveChart.Paste
ActiveSheet.ChartObjects("ChartVolumeMetricsDevEXPORT").Chart.Export "C:\Users\ajohnson\Desktop\workdamnit.jpg"
ActiveSheet.ChartObjects("ChartVolumeMetricsDevEXPORT").Delete
End Sub
这样做是需要一个Excel范围,然后把它放到一个图表,是范围的副本,并将其保存为JPG。
这是我最近在使其VB.NET尝试:
Dim xlApp As New Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Dim xlRange As Excel.Range
xlWorkBook = xlApp.Workbooks.Open("C:\test.xlsx")
xlWorkSheet = xlWorkBook.Sheets("Sheet1")
xlRange = xlWorkSheet.Range("B2:C6")
With xlWorkSheet.ChartObjects.add(xlRange.Left, xlRange.Top, xlRange.Width, xlRange.Height)
.name = "Chart1"
.activate()
End With
xlWorkSheet.ChartObjects("Chart1").Paste()
xlWorkSheet.ChartObjects("Chart1").chart.export(Filename:="C:\Users\ajohnson\Desktop\saveit.jpg")
xlWorkSheet.ChartObjects("Chart1").delete()
我遇到了麻烦转换ActiveChart.Paste
方法。 我不能让它在VB.NET工作。 它要么抛出一个错误或者它只是离开时,我做它在VB.NET一个空框(如果我添加.chart
它运行在贴之前,但不粘贴任何值),但在VBA它的值填充利益。 我曾尝试创建一个图表对象,但似乎没有任何工作。
我觉得像我靠近有它整理出来,但我不能完全得到它。 我想我可以把它作为一个VBA宏和VB.NET调用它,但似乎在一定程度上是荒谬的。 任何帮助将不胜感激。 我也可以有不同的方法,它只是我跨过来了,这是东西VBA效果很好,所以我想这是一个很好的起点。
感谢一如既往!