私はここからやりたいことを実行する優れた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でうまく機能したものであり、これが良い出発点であると考えました。
いつもありがとう!