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

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

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

Re[6]: 処理中のEXCELファイルも立ち上がってしまう


(過去ログ 22 を表示中)

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

■9590 / inTopicNo.1)  処理中のEXCELファイルも立ち上がってしまう
  
□投稿者/ もみじ (3回)-(2007/10/31(Wed) 13:26:37)

分類:[C#] 

Windows XP SP2
MS Office EXCEL 2003
VS2005

こんにちは。
下記の内容に心当たりのあるかた、アドバイスお願いいたします。

プログラム内で新規に作成したEXCELファイルに、
DBから取得したデータを書き込むというプログラムがあるのですが、
このプログラムの実行中に作成済みのEXCELファイルを開くと、
なぜか、そのプログラムで使用中のEXCELファイルも開いてしまします。
※作成済みというのは、私用で作成したEXCELファイルです。

新規作成時は以下のようにしています。
Excel.Application xlapp = null;
Excel.Workbooks xlbooks = null;
Excel.Workbook xlbook = null;
Excel.Worksheet xlsheet = null;
〜 省略 〜
xlbooks = xlapp.Workbooks;
xlbook = xlbooks.Add(string.Empty);
xlsheet = (Excel.Worksheet)xlbook.Worksheets[xlnowsheet];

問題となっているのは、作成済みのEXCELファイルを開いたときに、
プログラムで使用中のEXCELファイルが開くことで、これをどうにか開かないようにしたいのです。
※処理中のEXCELファイルを開いてしまうとプログラムが停止してしまうためです。

開かないようする事は、プログラム内で解決できることなのでしょうか。
よろしくお願いいたします。
引用返信 編集キー/
■9593 / inTopicNo.2)  Re[1]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ ひろ (63回)-(2007/10/31(Wed) 13:43:29)
No9590 (もみじ さん) に返信

以下の URL を見てください。
http://msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel.workbooks.open(VS.80).aspx


引用返信 編集キー/
■9595 / inTopicNo.3)  Re[2]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ もみじ (5回)-(2007/10/31(Wed) 14:21:48)
No9593 (ひろ さん) に返信
> ■No9590 (もみじ さん) に返信
>
> 以下の URL を見てください。
> http://msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel.workbooks.open(VS.80).aspx
>
>

ひろ さんご返信ありがとうございます。
URLを参考にさせて頂きましたが、これは予め用意されているファイルを読むメソッドのようなのですが、
xlbooks.Add(string.Empty); で新規に作成したEXCELファイルをさらにオープンすると良いということなのでしょうか。

お手数をおかけして申し訳ございません。

補足
このプログラムは、テンプレートを読込んで、それを元にEXCELを出力するような形式はとっていません。
引用返信 編集キー/
■9597 / inTopicNo.4)  Re[3]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ ひろ (64回)-(2007/10/31(Wed) 15:12:52)
No9595 (もみじ さん) に返信

> このプログラムは、テンプレートを読込んで、それを元にEXCELを出力するような形式はとっていません。

 あれ?
 そうなんですか?

 #9590 の書き込みで、

 >このプログラムの実行中に作成済みのEXCELファイルを開くと、

 とあったので、てっきり「ファイル」だと思いこんでいました。
 ここは「作成済みのEXCELオブジェクト」だったんですね。

 では、

 xlbook = xlbooks.Add(string.Empty);

 を、

 xlbook = xlbooks.Add(Type.Missing);

 のように、Addメソッドの引数を Type.Missing とするとどうなりますか?


引用返信 編集キー/
■9598 / inTopicNo.5)  Re[1]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ 特攻隊長まるるう (86回)-(2007/10/31(Wed) 15:18:27)
No9590 (もみじ さん) に返信
…ん?

表現として、こちらが必要な情報を含んでない部分がありますので
確認させてください。
>このプログラムの実行中に作成済みのEXCELファイルを開くと、
これはエクスプローラ等でファイルのアイコンをダブルクリックし、
既存のファイルを手作業で(プログラムを使わず)開くことを意味
していませんか?

引用返信 編集キー/
■9600 / inTopicNo.6)  Re[2]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ もみじ (6回)-(2007/10/31(Wed) 15:25:13)
No9597 (ひろ さん) に返信
ご返信ありがとうございます。

> xlbook = xlbooks.Add(Type.Missing);
>
> のように、Addメソッドの引数を Type.Missing とするとどうなりますか?

xlbook = xlbooks.Add(string.Empty);
の場合と同じ結果になってしました。
難しいですね・・・@@


No9598 (特攻隊長まるるう さん) に返信
> ■No9590 (もみじ さん) に返信
> …ん?
>
> 表現として、こちらが必要な情報を含んでない部分がありますので
> 確認させてください。
> >このプログラムの実行中に作成済みのEXCELファイルを開くと、
> これはエクスプローラ等でファイルのアイコンをダブルクリックし、
> 既存のファイルを手作業で(プログラムを使わず)開くことを意味
> していませんか?

ご返信ありがとうございます。

まさにその通りです。
この行為自体に問題があるのでしょうか?^^;

調べていくと、「Excel は複数のファイルを単一プロセスで開きます。」という情報を
見つけたのですが、これが原因なのでしょうか。。
引用返信 編集キー/
■9603 / inTopicNo.7)  Re[3]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ 魔界の仮面弁士 (509回)-(2007/10/31(Wed) 15:42:08)
■9590 (もみじ さん) に返信
> xlsheet = (Excel.Worksheet)xlbook.Worksheets[xlnowsheet];
Worksheets も変数に受け取らないと。


No9600 (もみじ さん) に返信
>>既存のファイルを手作業で(プログラムを使わず)開くことを意味
>>していませんか?
>まさにその通りです。
開かれても見えないよう、Window オブジェクトを Visible = false にしておくとか、
IgnoreRemoteRequests プロパティで、エクスプローラからの起動を一時的に封じるとか、
開かれても操作されないよう、Interactive プロパティを一時的に変更しておくとか。
(処理完了後、最後に元に戻しておく必要がありますが)


> 調べていくと、「Excel は複数のファイルを単一プロセスで開きます。」という情報を
タスクバーのウィンドウは、「Excelのプロセス別」ではなく「文書別」に表示されるので、
個々のドキュメントが別プロセスで開かれたのか、同一プロセスで開かれたのか、わかりにくいんですよね。
# ShowWindowsInTaskbar の設定にもよりますが。
引用返信 編集キー/
■9604 / inTopicNo.8)  Re[3]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ ひろ (65回)-(2007/10/31(Wed) 15:46:47)
No9600 (もみじ さん) に返信

> まさにその通りです。
> この行為自体に問題があるのでしょうか?^^;
>
> 調べていくと、「Excel は複数のファイルを単一プロセスで開きます。」という情報を
> 見つけたのですが、これが原因なのでしょうか。。

 そういうことでしたか。
 であれば、私がした回答は全て無駄ですね。忘れてください。

ん〜、これって回避方法あるんですかね?
 教えて、偉い人。

引用返信 編集キー/
■9609 / inTopicNo.9)  Re[4]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ もみじ (7回)-(2007/10/31(Wed) 16:24:35)
No9603 (魔界の仮面弁士 さん) に返信

ご返信ありがとうござます。

> 開かれても見えないよう、Window オブジェクトを Visible = false にしておくとか、
> IgnoreRemoteRequests プロパティで、エクスプローラからの起動を一時的に封じるとか、
> 開かれても操作されないよう、Interactive プロパティを一時的に変更しておくとか。
> (処理完了後、最後に元に戻しておく必要がありますが)
なるほど、こういった方法で制限をかけることもできるのですね。
各プロパティをもう少し調べてみて検討させて頂きます!^^


No9604 (ひろ さん) に返信

ご返信ありがとうござます。

> そういうことでしたか。
> であれば、私がした回答は全て無駄ですね。忘れてください。

いえいえ、とんでもないです^^
私の情報が不十分で申し訳なかったです。。

> ん〜、これって回避方法あるんですかね?
いろいろなサイトをまわっておりますが、この手の回答は無いに等しいのですね。。。



引用返信 編集キー/
■9613 / inTopicNo.10)  Re[4]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ 特攻隊長まるるう (87回)-(2007/10/31(Wed) 17:25:46)
No9604 (ひろ さん) に返信
>> ん〜、これって回避方法あるんですかね?
>いろいろなサイトをまわっておりますが、この手の回答は無いに等しいのですね。。。
起動オプションを変更すれば、新規プロセスでの起動への変更はできるような気がします。
手作業でもスタートメニューから起動した場合と同じ動きで。。。

ただ、OS の設定を変更するのは躊躇われます。また、起動するごとに新規プロセスが
作成されると、Excel の動作(Book 間のコピーとか)が変わります。Excel メニューから
ファイルを開いてもらうような運用をすればいいのですが、それもいまいち。

デスクトップにドラッグアンドドロップで新規プロセスで起動するプログラムの
ショートカットを作っておく。。。いまいち。

結局、Excel の動作をそれなりに理解した人がそれなりの手順を踏む必要がありそうで
意味が無いように思います。
# 何の設定も変更せず、スタートメニューから新規 Excel を立ち上げて、その Excel
# メニューから既存のファイルを開く(もしくはファイルをドラッグアンドドロップ)
# のが一番良い

プログラムから言えば、魔界の仮面弁士 さんのおっしゃるように操作を禁止したい
Book 側で制限かける方が良いと思います。

。。。それ以前に、Excel が裏で終始動作しているような端末で、ユーザに Excel
操作はさせませんねww
処理時間を極力減らすか、時間が掛かる場合は画面に『処理中』と表示しておきます(^^;
『処理中は操作しないでください』の方針で。

引用返信 編集キー/
■9622 / inTopicNo.11)  Re[5]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ ひろ (66回)-(2007/11/01(Thu) 08:32:02)
No9613 (特攻隊長まるるう さん) に返信

 確かにOSの設定を変えるのは躊躇しますね。
 あとはもみじさんの判断ですね。

 私のスタンスは、特効隊長まるるうさんが示している通り、「この端末ではExcelを動かさないでください」ですね。
 (動かした場合はお客様の自己責任でw)

引用返信 編集キー/
■9631 / inTopicNo.12)  Re[5]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ もみじ (8回)-(2007/11/01(Thu) 11:35:59)
皆様、おはようございます(^^

No9613 (特攻隊長まるるう さん) に返信
ご返信ありがとうございます。

> 。。。それ以前に、Excel が裏で終始動作しているような端末で、ユーザに Excel
> 操作はさせませんねww

まさにその通りですよね・・・^^;
でも、操作される可能性があるということで、
どうに回避して欲しいとのことでして・・・@@

No9622 (inTopicNo さん) に返信
ご返信ありがとうございます。

> 私のスタンスは、特効隊長まるるうさんが示している通り、「この端末ではExcelを動かさないでください」ですね。
> (動かした場合はお客様の自己責任でw)

魔界の仮面弁士 さんのおっしゃるように操作を禁止する方向で調査を進める事になりそうです^^;
>「この端末ではExcelを動かさないでください」
これが一番安全なのかもしれないですね・・(><


皆様、いろいろなご意見、ありがとうございました。
また、何かありましたら、よろしくお願い致します。

解決済み
引用返信 編集キー/
■9634 / inTopicNo.13)  Re[6]: 処理中のEXCELファイルも立ち上がってしまう
□投稿者/ もみじ (9回)-(2007/11/01(Thu) 12:16:55)
2007/11/01(Thu) 13:03:56 編集(投稿者)

最後に結果報告です。

IgnoreRemoteRequests プロパティを設定する事で、
思い通りの動作を実現することができました。

ありがとうございました(^^

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -