- - PR -
Excelのシートコピーでオートシェイプがコピーされない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-12-13 16:08
VS.NET2005(C#)で開発をしております。
複数のExcelを一つのExcelにまとめるようなプログラムを作成しているのですが、シートをコピーした際に、セルの色や形などはちゃんとコピーされるのですが、 なぜかオートシェイプで作成した図形がコピーされません。 オートシェイプの図形をコピーするには特殊な操作が必要なのでしょうか? | ||||
|
投稿日時: 2007-12-13 17:22
まずはどのような手段でどのようなコードを書いているのか提示して頂けませんか? Object Library による COM Interop か VSTO あたりならば答えられるかと思いますが、とりあえずコードが欲しいです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-12-13 18:11
ありがとうございます。
かいつまんでソースを貼り付けます ------------------------------------------------------------------ // 新しいブックにシートをコピーして保存する if (saveFileDialog1.ShowDialog() == DialogResult.OK) { // Excelアプリとブックのインスタンスを生成する Excel.Application xlsApp = new Excel.Application(); Excel.Workbooks xlsBooks; // Excelアプリを起動します xlsApp.Visible = true; // Bookを閉じる時、確認メッセージを表示させない xlsApp.Application.DisplayAlerts = false; // 新しいWorkBooksを取得する xlsBooks = xlsApp.Workbooks; // 新しいExcelブックを追加する xlsBooks.Add(string.Empty); // 新規Bookを取得する Excel._Workbook bookNew = xlsBooks.get_Item(1); // 新規Bookシートを全て取得 Excel.Sheets sheetsNew = bookNew.Worksheets; // シートオブジェクト Excel._Worksheet sheet; // 処理対象となるをExcelブックを全て読み込み、シートを追加する foreach (string strFileName in あるだけ) { // 既存のExcelブックを開く xlsBooks.Open(strFileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); // Bookを取得する Excel._Workbook book = xlsBooks.get_Item(2); // シートを全て取得 Excel.Sheets sheets = book.Worksheets; // シートがあるだけ処理を回す for (int j = 1; j <= sheets.Count; ++j) { // シートを取得 sheet = (Excel._Worksheet)sheets.get_Item(j); // シートをコピー sheet.Copy(Type.Missing, sheetsNew.get_Item(sheetsNew.Count)); } // 開いた既存のExcelブックを閉じる book.Close(Type.Missing, Type.Missing, Type.Missing); // COM オブジェクトの参照カウントを解放する Marshal.ReleaseComObject(sheets); Marshal.ReleaseComObject(book); } 以下後処理 ------------------------------------------------------------------ 例外処理などは省いております。 宜しくお願いします。 |
1