QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

Excelへの画像の挿入について

いつもお世話になっております。

現在、VB.NET2003にてWindowsアプリケーションの作成を行っております。
さっそくの質問なのですが、
既存のExcelファイルに、作成したアプリより、画像(jpg、bmp等)を
挿入することは可能なのでしょうか???

どうか知恵をお貸しくださいますよう、よろしくお願いいたします。

質問者:.net

回答

.netさんの書き込み (2006-07-04 11:32) より:

既存のExcelファイルに、作成したアプリより、画像(jpg、bmp等)を挿入することは可能なのでしょうか???

可能です。

ファイルから貼り付けるのか、イメージを渡して貼り付けたいのか、
VSTO を使われるのか、PIA を使われるのか、貼り付けられた画像の扱いはオブジェクトで良いのか、
などなど詳細が書かれていないので、望む回答にはならないかもしれませんが、

たとえば、ファイルから指定の画像を貼り付ける場合は、
IPictrues インターフェイスの Insert メソッドから可能です。

_________________C# と VB.NET の入門サイト
じゃんぬねっと日誌

投稿者:じゃんぬねっと

編集 履歴 (0)

>>じゃんぬねっと様
さっそくのご返答ありがとうございます。
いつも参考にさせていただいています。

情報が不足していて申し訳ございません。。。

ご指摘の通り、ファイルよりExcelへの画像の挿入です。

>>たとえば、ファイルから指定の画像を貼り付ける場合は、
IPictrues インターフェイスの Insert メソッドから可能です。

について、もう少しご教授願えませんでしょうか???

「IPictrues」を検索しても、情報がまったくといっていいほどありませんでした・・・。
ご迷惑をおかけします。

投稿者:.net

編集 履歴 (0)

.netさんの書き込み (2006-07-04 12:08) より:

ご指摘の通り、ファイルよりExcelへの画像の挿入です。

VSTO ではなく、いつものように COM Interop で宜しいでしょうか?
(Microsoft Excel xx.x Object Library)

について、もう少しご教授願えませんでしょうか???

「IPictrues」を検索しても、情報がまったくといっていいほどありませんでした・・・。

Excel.Pictures と Excel.Picture というインターフェイスが存在します。
これらは非表示メンバなので、インテリセンスからでは確認できないんです。
オブジェクト ブラウザで [非表示メンバを表示] を選択すると、見つけることができます。

_________________C# と VB.NET の入門サイト
じゃんぬねっと日誌

投稿者:じゃんぬねっと

編集 履歴 (0)

>>じゃんぬねっと様
ご返答ありがとうございます。

>>オブジェクト ブラウザで [非表示メンバを表示] を選択すると、見つけることができます。

無事見つけることが出来ました。
やりたかった処理も無事に出来ました。ありがとうございました。

また、機会がありましたら、よろしくお願いいたします。

こちらのページも参照に使用しましたので念のため、記述しておきます。
http://f57.aaa.livedoor.jp/~jeanne/bbs/faq.cgi?mode=al2&namber=2844&KLOG=17

投稿者:.net

編集 履歴 (0)

.netさんの書き込み (2006-07-04 18:11) より:

無事見つけることが出来ました。

やりたかった処理も無事に出来ました。ありがとうございました。

また、機会がありましたら、よろしくお願いいたします。

解決されて良かったです。

私もソースを書いておりましたので、フィードバックしておきます。
(よろしければ、見比べてみてください)




    Private Shared Sub MosaMosaAA()
        Dim xlApplication As Excel.Application

        Try
            xlApplication = New Excel.Application()
            xlApplication.Visible = True
            Dim xlWorkbooks As Excel.Workbooks

            Try
                xlWorkbooks = xlApplication.Workbooks
                Dim xlWorkbook As Excel.Workbook

                Try
                    xlWorkbook = xlWorkbooks.Open("E:\Maki.xls")
                    Dim xlSheets As Excel.Sheets

                    Try
                        xlSheets = xlWorkbook.Worksheets
                        Dim xlWorksheet As Excel.Worksheet

                        Try
                            xlWorksheet = DirectCast(xlSheets(1), Excel.Worksheet)
                            Dim xlPictures As Excel.Pictures

                            Try
                                xlPictures = DirectCast(xlWorksheet.Pictures, Excel.Pictures)
                                Dim xlPicture As Excel.Picture

                                Try
                                    xlPicture = DirectCast(xlPictures.Insert("E:\Uehara.bmp"), Excel.Picture)
                                    xlPicture.Left = 100
                                    xlPicture.Top  = 100
                                    xlWorkbook.Save()
                                Finally
                                    If Not xlPicture Is Nothing Then
                                        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlPicture)
                                    End If
                                End Try
                            Finally
                                If Not xlPictures Is Nothing Then
                                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlPictures)
                                End If
                            End Try
                        Finally
                            If Not xlWorksheet Is Nothing Then
                                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorksheet)
                            End If
                        End Try
                    Finally
                        If Not xlSheets Is Nothing Then
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)
                        End If
                    End Try
                Finally
                    If Not xlWorkbook Is Nothing Then
                        Try
                            xlWorkbook.Close()
                        Finally
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook)
                        End Try
                    End If
                End Try
            Finally
                If Not xlWorkbooks Is Nothing Then
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbooks)
                End If
            End Try
        Finally
            If Not xlApplication Is Nothing Then
                Try
                    xlApplication.Quit()
                Finally
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication)
                End Try
            End If
        End Try
    End Sub

いつか誰かのために参考になれば幸いです。

_________________C# と VB.NET の入門サイト
じゃんぬねっと日誌

投稿者:じゃんぬねっと

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。