C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: VSTO Excel.Worksheet選択について


(過去ログ 75 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■43633 / inTopicNo.1)  VSTO Excel.Worksheet選択について
  
□投稿者/ msnr (5回)-(2009/11/14(Sat) 01:07:24)

分類:[C#] 

VSTOについての質問となります。
環境はVS2008/Office2007共にProfessionalです。
今回はExcel.Worksheet選択についてです。
以下がコードなのですが。

namespace ExcelWorkbook1
{
public partial class ThisWorkbook
{
private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
((Excel.Worksheet)this.Application.ActiveWorkbook.Sheets["Sheet2"]).Select(System.Type.Missing);
}

private void ThisWorkbook_Shutdown(object sender, System.EventArgs e)
{
((Excel.Worksheet)this.Application.ActiveWorkbook.Sheets["Sheet1"]).Select(System.Type.Missing);
}
以下、省略

処理は思う通り動作していますが
コードをもう少し簡略に書くことは可能なのでしょうか?

お時間の許す限りで結構です。
識者の方々、ご教授下さいませ。
引用返信 編集キー/
■43634 / inTopicNo.2)  Re[1]: VSTO Excel.Worksheet選択について
□投稿者/ 渋木宏明(ひどり) (1246回)-(2009/11/14(Sat) 02:38:52)
渋木宏明(ひどり) さんの Web サイト
> 処理は思う通り動作していますが
> コードをもう少し簡略に書くことは可能なのでしょうか?

それ以前に、COM オブジェクトの解放漏れがわらわらあるように見えます。
引用返信 編集キー/
■43636 / inTopicNo.3)  Re[1]: VSTO Excel.Worksheet選択について
□投稿者/ 魔界の仮面弁士 (1386回)-(2009/11/14(Sat) 13:03:18)
No43633 (msnr さん) に返信
> ((Excel.Worksheet)this.Application.ActiveWorkbook.Sheets["Sheet2"]).Select(System.Type.Missing);
「アクティブなブック上のSheet2」を操作したいのではなく、
「このブック上のSheet2」を操作したいのではないでしょうか?

もしそうなら、ThisWorkbook に対して処理する必要があるので、
  ((Excel.Worksheet)this.Sheets["Sheet2"]).Select(Type.Missing);
あるいは、
  ((Excel.Worksheet)this.Worksheets["Sheet2"]).Select(Type.Missing);
かと。


> コードをもう少し簡略に書くことは可能なのでしょうか?
文字数を短く書きたいという意図であるのならば、
 Application.ExecuteExcel4Macro("ACTIVATE(\"Sheet2\")");
とか。
引用返信 編集キー/
■43638 / inTopicNo.4)  Re[2]: VSTO Excel.Worksheet選択について
□投稿者/ 魔界の仮面弁士 (1387回)-(2009/11/14(Sat) 14:50:45)
No43636 (魔界の仮面弁士 さん) に返信
>>コードをもう少し簡略に書くことは可能なのでしょうか?
> 文字数を短く書きたいという意図であるのならば、
>  Application.ExecuteExcel4Macro("ACTIVATE(\"Sheet2\")");
> とか。

プロジェクト内のシートを対象にするのであれば、
Globals クラスを使うこともできそうです。
 Globals.Sheet2.Select(Type.Missing);
引用返信 編集キー/
■43651 / inTopicNo.5)  Re[2]: VSTO Excel.Worksheet選択について
□投稿者/ msnr (6回)-(2009/11/15(Sun) 06:35:29)
No43636 (魔界の仮面弁士 さん) に返信
> ■No43633 (msnr さん) に返信
>>((Excel.Worksheet)this.Application.ActiveWorkbook.Sheets["Sheet2"]).Select(System.Type.Missing);
> 「アクティブなブック上のSheet2」を操作したいのではなく、
> 「このブック上のSheet2」を操作したいのではないでしょうか?
>
> もしそうなら、ThisWorkbook に対して処理する必要があるので、
>   ((Excel.Worksheet)this.Sheets["Sheet2"]).Select(Type.Missing);
> あるいは、
>   ((Excel.Worksheet)this.Worksheets["Sheet2"]).Select(Type.Missing);
> かと。
>
>
>>コードをもう少し簡略に書くことは可能なのでしょうか?
> 文字数を短く書きたいという意図であるのならば、
>  Application.ExecuteExcel4Macro("ACTIVATE(\"Sheet2\")");
> とか。

そうなんです、ご察しの通り「このブック上のSheet2」の操作です。
((Excel.Worksheet)this.Sheets["Sheet2"]).Select(Type.Missing);
みごとこちらで出来ました!!

魔界の仮面弁士さん、先日に引き続きありがとうございました。
仕事が遅く、返事が遅くなってしまいます事、申し訳なく思っています。

それでは渋木宏明さん、魔界の仮面弁士さん、ありがとうございました。

今後とも宜しくお願いします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -