- - PR -
Excelで既存のシートを同一Book内で新規コピーするには?
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-15 17:22
皆様の知恵を拝借させて頂きたく宜しくお願いします。
ご確認させて頂きたい内容は、件名に記載している通りで 、同一Book内で既に存在しているシートを新規でコピーす る方法についてです。 VB6.0だと、以下で可能と思います。 ----------------------------------------------------------- Dim xlSheet1 As Excel.Worksheet Dim xlSheet2 As Excel.Worksheet '現在アクティブなシートを新規コピー xlSheet1.Copy After:=xlSheet1 'Sheet1のシート名を"新規ワークシート"という名前に変更 xlBook.ActiveSheet.Name = "新規ワークシート" 'インスタンス設定(?) Set xlSheet2 = xlBook.Worksheets(2) '指定したセルにデータを設定 xlSheet2.Cells(2, 1) = "これは試験です。" ----------------------------------------------------------- 上記のようなことをC#でも実現したいのですが、可能なのでしょうか? 異なるBook間におけるシートコピーは分かるのですが、上記について どうしても分かりません。 どうか宜しくお願い致します。 | ||||||||
|
投稿日時: 2006-06-15 17:24
以下は、誤りでした。
'Sheet1のシート名を"新規ワークシート"という名前に変更 以下に訂正いたします。 'Sheet2のシート名を"新規ワークシート"という名前に変更 | ||||||||
|
投稿日時: 2006-06-15 17:56
こんにちは。
VSTO で実現可能です。 Microsoft.Office.Tools.Excel.Worksheet クラスに Copy というメソッドがあります。 MSDN に使用例が載っています。 Worksheet.Copy メソッド http://msdn2.microsoft.com/ja-jp/library/microsoft.office.tools.excel.worksheet.copy.aspx | ||||||||
|
投稿日時: 2006-06-15 17:57
http://www.microsoft.com/japan/msdn/officedev/vsto2003/ExcelObj.asp
に方法として、以下が記載されておりました。 ((Excel.Worksheet)ThisWorkbook.Sheets[1]).Copy(Type.Missing, ThisWorkbook.Sheets[3]); また、上記を以下に書き換えて、実行したところ問題なく実行されました。 ((Excel.Worksheet)oWB.Sheets[1]).Copy(Type.Missing, oWB.Sheets[2]); ありがとうございました。 | ||||||||
|
投稿日時: 2006-06-15 17:59
ue大ベテラン様
早速のアドバイスの程、ありがとうございました。 当方で解決策を記載した後で、スレッドを参照したところ、 ue大ベテラン様の記載を確認いたしました。 方法としては、同じと認識しました。 ありがとうございました。 | ||||||||
|
投稿日時: 2006-06-15 18:13
VSTO を使っているわけじゃないのですよね。 「Microsoft Excel xx.x Object Library」 を使っているのだとしたら、 この記述では 「メモリリーク」 を起こしますから、アウトですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-06-15 18:18
じゃんぬねっと様
ご指摘をありがとうございます。 「Microsoft Excel xx.x Object Library」 を使用しているので、 アウトですね。。。 当方の勉強が足りないですね。 VSTOを利用する場合ですので、ueベテラン様が紹介してくれたサイト の情報を良く観察したいと思います。 すいません、ありがとうございました。 | ||||||||
|
投稿日時: 2006-06-15 18:22
VSTO は VSTO ですから、いくら情報を眺めても、解決にはならないと思います。 これから、VSTO で開発するというのであれば別ですが... COM オブジェクトを扱う場合は、'参照カウント' をデクリメントする必要があります。 COM オブジェクトを解放する
このコードには、暗黙の参照が、いくつかあります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1