- PR -

Excelに画像ファイルを貼り付ける方法

投稿者投稿内容
test
会議室デビュー日: 2008/04/01
投稿数: 9
お住まい・勤務地: 古の都
投稿日時: 2008-06-24 14:43
引用:

Liquid_Forceさんの書き込み (2008-06-24 14:10) より:

【VB.NET】参考PG
xlPictures = DirectCast(xlWorksheet.Pictures, Excel.Pictures)
【C#.NET】小職PG
pictures = (Excel.pictures)workSheet.pictures(1);




pictures = (Excel.pictures)workSheet.pictures();
でもダメ?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-06-24 15:17
引用:

ひろれいさんの書き込み (2008-06-24 14:24) より:

役に立つ時がきたようですねwww
スレ主さんは、C# への変換で困っているようですが・・・


本人が忘れていたらしいです。

引用:

testさんの書き込み (2008-06-24 14:43) より:

pictures = (Excel.pictures)workSheet.pictures();
でもダメ?


引数が省略できるわけではないので、コンパイル エラーになって実行ができなくなると思います。

C# からだと Excel._Worksheet インターフェイスからでないと Pictures を MissingValue 指定できないハズです。 VB はちょっと特殊で複数のインターフェイスをあたかもひとつのものかのように参照できるので先のコードで問題ありません。 ちょっと記憶が曖昧です。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-06-24 16:10
久しぶりにいつもの鬼インデントのコードを書いてみました。

コード:

    private static void MosaMosaAA() {
        Excel.Application xlApplication = null;

        try {
            xlApplication = new Excel.Application();
            xlApplication.Visible = true;
            xlApplication.DisplayAlerts = false;
            Excel.Workbooks xlWorkbooks = null;

            try {
                xlWorkbooks = xlApplication.Workbooks;
                Excel.Workbook xlWorkbook = null;

                try {
                    xlWorkbook = xlWorkbooks.Add(System.Reflection.Missing.Value);
                    Excel.Sheets xlSheets = null;

                    try {
                        xlSheets = xlWorkbook.Worksheets;
                        Excel._Worksheet xlWorksheet = null;

                        try {
                            xlWorksheet = (Excel._Worksheet)xlSheets[1];
                            Excel.Pictures xlPictures = null;

                            try {
                                xlPictures = (Excel.Pictures)xlWorksheet.Pictures(System.Reflection.Missing.Value);
                                Excel.Picture xlPicture = null;

                                try {
                                    xlPicture = xlPictures.Insert(@"C:\駅のホームですっぽんぽん!.jpg", System.Reflection.Missing.Value);
                                    xlWorkbook.SaveAs(
                                        @"C:\MakiMakiLove.xls",
                                        System.Reflection.Missing.Value,
                                        System.Reflection.Missing.Value,
                                        System.Reflection.Missing.Value,
                                        System.Reflection.Missing.Value,
                                        System.Reflection.Missing.Value,
                                        Excel.XlSaveAsAccessMode.xlNoChange,
                                        System.Reflection.Missing.Value,
                                        System.Reflection.Missing.Value,
                                        System.Reflection.Missing.Value,
                                        System.Reflection.Missing.Value,
                                        System.Reflection.Missing.Value
                                    );

                                    System.Windows.Forms.MessageBox.Show("んっ!! ちゃんと表示されたから閉じるゾ!");
                                } finally {
                                    if (xlPicture != null) {
                                        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlPicture);
                                    }
                                }
                            } finally {
                                if (xlPictures != null) {
                                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlPictures);
                                }
                            }
                        } finally {
                            if (xlWorksheet != null) {
                                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorksheet);
                            }
                        }
                    } finally {
                        if (xlSheets != null) {
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets);
                        }
                    }
                } finally {
                    if (xlWorkbook != null) {
                        try {
                            xlWorkbook.Close(
                                System.Reflection.Missing.Value,
                                System.Reflection.Missing.Value,
                                System.Reflection.Missing.Value
                            );
                        } finally {
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook);
                        }
                    }
                }
            } finally {
                if (xlWorkbooks != null) {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbooks);
                }
            }
        } finally {
            if (xlApplication != null) {
                try {
                    xlApplication.Quit();
                } finally {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication);
                }
            }
        }        
    }


たぶんこれで画像が Worksheet の左上のところに挿入されるハズです。

こんなコードを書くより COM に適した言語 (VB | VBScript) などを利用した方が賢明ですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2008-06-24 16:32
おっ!
Missing.Value でいけるじゃん!

って思ったら、既にじゃんぬさんが完璧なサンプルを提示してた・・・orz

まあ、初めて C# をさわって勉強になったので良いですが(負け惜しみw

スレ主さんはご存知かもしれませんが、Web 上で VB.NET → C# にコード変換してくれるページ(逆ももちろんあり)がありますので、そういった機能を使うと省力化できると思います。
もちろん、完璧には変換してくれないので、手直しの部分も多いのですが。
Liquid_Force
大ベテラン
会議室デビュー日: 2003/08/28
投稿数: 102
投稿日時: 2008-06-24 16:57
じゃんぬねっとさん、ひろれいさん、コメントありがとう御座います。
※コードまで書いて頂いて m(_ _)m
私もできました!!!(Missing.Valueで)

ホント忙しい中ありがとう御座います、助かります。
なんと!?変換ページなんかあるんですか!!!(コード変換)
知りませんでした(汗

C#からVBScriptを利用する方法は次回の案件で導入するようがんばります。

あとは画像のサイズ変更とかが必要なのでがんばります!
また助けを求めてしまうと思いますが・・・

他にもコメントくださった方々ありがとう御座います。
私もコメントできるよう学びます。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2008-06-24 17:06
引用:

Liquid_Forceさんの書き込み (2008-06-24 16:57) より:

なんと!?変換ページなんかあるんですか!!!(コード変換)
知りませんでした(汗



ご参考までに。

  C#のコードをVB.NETへ、VB.NETのコードをC#へ変換する

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