タイトル : Re^4: Excelの『既存』グラフをクリップボード経由でPictureBoxに貼付 投稿日 : 2010/11/12(Fri) 11:35 投稿者 : 酔いどれ熊
プログラムレベルも質問の仕方も稚拙でご迷惑を掛けております。 プログラムとしては以下のような感じにしています。 --------------------------------------------------------- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlFilePath As String = "c:\Test\Test1.xls" Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath) Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(1) xlApp.Visible = False Dim MyCharts As Excel.ChartObjects Dim MyChart As Excel.ChartObject Dim MyChart1 As Excel.Chart MyCharts = xlSheet.ChartObjects MyChart = CType(MyCharts.Item("Graph1"), Excel.Chart) '-----@ MyChart1 = MyChart.Chart 'Excelグラフをクリップボード経由でPictureBoxに貼付 'xlSheet.ChartObjects("グラフ 1").Copy() 'これでは、.NET では取得できない MyChart1.CopyPicture(Appearance:=Excel.XlPictureAppearance.xlScreen, _ Size:=Excel.XlPictureAppearance.xlScreen, _ Format:=Excel.XlCopyPictureFormat.xlBitmap) 'クリップボードにあるデータを取得 Dim iData As IDataObject = Clipboard.GetDataObject() If iData.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap) Then PictureBox1.Image = CType(iData.GetData(DataFormats.Bitmap), Image) End If MRComObject(MyChart1) 'MyChart1 の解放 MRComObject(MyChart) 'MyChart の解放 MRComObject(MyCharts) 'MyCharts の解放 '================== ファイルの保存処理 ================== 'xlApp.DisplayAlerts = False '保存時の問合せのダイアログを非表示に設定 'xlSheet.SaveAs(xlFilePath) 'ファイルに保存 'xlApp.DisplayAlerts = True '元に戻す '================== 終了処理 ===================== MRComObject(xlSheet) 'xlSheet の解放 MRComObject(xlSheets) 'xlSheets の解放 xlBook.Close(False) 'xlBook を閉じる MRComObject(xlBook) 'xlBook の解放 MRComObject(xlBooks) 'xlBooks の解放 xlApp.Quit() 'Excelを閉じる MRComObject(xlApp) 'xlApp を解放 ’(以下のエクセル解放?処置は省略してます) End Sub --------------------------------------------------------- この状態で実行すると ChartObjects クラスの Item メソッドが失敗しました。 とのエラーが出て止まってしまっています。 |