tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 メソッドが失敗しました。
とのエラーが出て止まってしまっています。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。