- PR -

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

1
投稿者投稿内容
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-07-04 11:32

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

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

どうか知恵をお貸しくださいますよう、よろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 11:50
引用:

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

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


可能です。

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

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

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-07-04 12:08
>>じゃんぬねっと様
さっそくのご返答ありがとうございます。
いつも参考にさせていただいています。

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

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

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

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

「IPictrues」を検索しても、情報がまったくといっていいほどありませんでした・・・。
ご迷惑をおかけします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 12:20
引用:

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

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


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

引用:

について、もう少しご教授願えませんでしょうか???
「IPictrues」を検索しても、情報がまったくといっていいほどありませんでした・・・。


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

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-07-04 18:11

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

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

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

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


こちらのページも参照に使用しましたので念のため、記述しておきます。
http://f57.aaa.livedoor.jp/~jeanne/bbs/faq.cgi?mode=al2&namber=2844&KLOG=17
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 18:20
引用:

.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 の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)