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

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

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

Re[6]: VB.NETで同名のファイルが開かれているかどうか


(過去ログ 54 を表示中)

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

■30435 / inTopicNo.1)  VB.NETで同名のファイルが開かれているかどうか
  
□投稿者/ まいか (42回)-(2008/12/24(Wed) 11:21:08)

分類:[.NET 全般] 

お世話になります
WinXP、VB.Net2005と言う環境です
現在、Excel出力時にExcelファイルを開きつつ、同名のExcelファイルを作成しようとするとエラーが出てしまうので
作成前に同名のファイルが開かれているかどうか調べたいのですが、どうすれば開かれているかどうか判断出きるでしょうか
よろしくお願いします
引用返信 編集キー/
■30438 / inTopicNo.2)  Re[1]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ .SHO (511回)-(2008/12/24(Wed) 11:33:20)
プログラムからExcelを起動してるってことですか?
引用返信 編集キー/
■30441 / inTopicNo.3)  Re[2]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ まいか (43回)-(2008/12/24(Wed) 11:54:19)
.SHOさんありがとうございます
ExcelファイルをExcelで開いている状態で、プログラムからExcelファイルを作ろうとする時です


引用返信 編集キー/
■30442 / inTopicNo.4)  Re[3]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ .SHO (512回)-(2008/12/24(Wed) 11:59:44)
No30441 (まいか さん) に返信

> ExcelファイルをExcelで開いている状態で、プログラムからExcelファイルを作ろうとする時です

排他書き込みでオープンしてみればわかると思います。
ただし、Excelが開いてるかどうかはわからないですが。。。
っていうか「エラーが出ている=わかってる」ことになっちゃいますが。
引用返信 編集キー/
■30443 / inTopicNo.5)  Re[4]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ やじゅ (889回)-(2008/12/24(Wed) 12:02:33)
やじゅ さんの Web サイト
2008/12/24(Wed) 12:03:25 編集(投稿者)

> ■No30441 (まいか さん) に返信
>

該当ファイルを同一名でリネームしてみて、例外エラー(別のプロセスで使用中)
が発生したら、使用中と判断するとか
引用返信 編集キー/
■30451 / inTopicNo.6)  Re[5]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ ちゃっぴ (182回)-(2008/12/24(Wed) 12:49:11)
ちゃっぴ さんの Web サイト
Timing の問題は避けて通れないので、例外で判断ですね。
引用返信 編集キー/
■30457 / inTopicNo.7)  Re[1]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ くだん (15回)-(2008/12/24(Wed) 13:31:39)
No30435 (まいか さん) に返信
> 現在、Excel出力時にExcelファイルを開きつつ、同名のExcelファイルを作成しようとするとエラーが出てしまうので
『同じ名前のファイルを同時に開くことはできません。』
というエラーメッセージのほうだと思いますが、
ユーザが作業している Excel アプリケーションの裏で Book を
操作すると色々と不具合が起きませんか?

先にプログラムが実行している Excel アプリケーションを
ユーザが利用するのを防ぐのは難しいですが、プログラムが
後から実行するなら、別の Excel アプリケーションを Create
した方が良いのでは?
引用返信 編集キー/
■30459 / inTopicNo.8)  Re[1]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ 渋木宏明(ひどり) (1008回)-(2008/12/24(Wed) 13:46:15)
渋木宏明(ひどり) さんの Web サイト
ROT (Running Object Table) 見るとか。


引用返信 編集キー/
■30460 / inTopicNo.9)  Re[2]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ まいか (44回)-(2008/12/24(Wed) 14:13:22)
みなさん、ありがとうございます
以下の様にしてみました
If IO.File.Exists("C:\Excel.xls") = True Then
            Try
                System.IO.File.Move("C:\Excel.xls", "C:\Excel.xls")
            Catch ex As Exception
                MessageBox.Show("既に起動していますよ")
            End Try
End If

取り合えず試しではありますが、出来たかなと思っています
何か問題点等がありましたら、ご指摘頂けないでしょうか
よろしくお願いします

引用返信 編集キー/
■30462 / inTopicNo.10)  Re[3]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ ちゃっぴ (183回)-(2008/12/24(Wed) 14:17:10)
ちゃっぴ さんの Web サイト
その対策をしても根本解決にはならないでしょうから、保存に失敗したときの処理が必要です。

もっとも、失敗したときにどうするのかが書かれていませんので何をするのかわかりませんが。。。
引用返信 編集キー/
■30463 / inTopicNo.11)  Re[4]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ .SHO (514回)-(2008/12/24(Wed) 14:28:01)
2008/12/24(Wed) 14:35:29 編集(投稿者)

ごめんなさい。間違えました。
引用返信 編集キー/
■30464 / inTopicNo.12)  Re[5]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ .SHO (515回)-(2008/12/24(Wed) 14:38:26)
改めて…

Excelファイルを作成しようとするとエラーが出てるのですから
そのエラーで判断すれば良くないですか?

二度手間のように思えますが。。。
引用返信 編集キー/
■30465 / inTopicNo.13)  Re[3]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ επιστημη (1478回)-(2008/12/24(Wed) 14:48:00)
επιστημη さんの Web サイト
> 取り合えず試しではありますが、出来たかなと思っています

"ファイルが存在するか否かのチェック" と
"ファイル移動" との狭間に
"よそ者によるファイルの作成"が滑り込むことができる限り
いくらチェックしても穴が空きます、ってことで。

引用返信 編集キー/
■30466 / inTopicNo.14)  Re[5]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ まいか (45回)-(2008/12/24(Wed) 14:48:32)
ちゃっぴさん、ありがとうございます
上記のコードで"既に起動していますよ"と出た際は、その他の処理は一切中止にする事にして
Return Falseで返して、元の画面に戻る様にしようとしています

引用返信 編集キー/
■30467 / inTopicNo.15)  Re[6]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ ちゃっぴ (184回)-(2008/12/24(Wed) 15:03:11)
ちゃっぴ さんの Web サイト
No30466 (まいか さん) に返信
> 上記のコードで"既に起動していますよ"と出た際は、その他の処理は一切中止にする事にして
> Return Falseで返して、元の画面に戻る様にしようとしています

じゃあ、例外発生したときも同様の処理を行う必要がありますね。
引用返信 編集キー/
■30468 / inTopicNo.16)  Re[3]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ みきぬ (322回)-(2008/12/24(Wed) 15:08:52)
No30460 (まいか さん) に返信
> If IO.File.Exists("C:\Excel.xls") = True Then
>             Try
>                 System.IO.File.Move("C:\Excel.xls", "C:\Excel.xls")
>             Catch ex As Exception
>                 MessageBox.Show("既に起動していますよ")
>             End Try
> End If
> 
ところで、これは何を意図した処理なのだろう…。

引用返信 編集キー/
■30469 / inTopicNo.17)  Re[4]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ まいか (46回)-(2008/12/24(Wed) 15:20:14)
ご指摘どうもありがとうございます
上記のチェックは、Excel作成前に行います
それで、同名のファイルがあり、そしてそのファイルが開かれていたらエラーを出す様にと思い
上記のコードの様にしてみました
他の処理から同じ名前のファイルが出来る事は無いと言う条件です

どの様にすれば二度手間は防げるのでしょうか
教えて頂けないでしょうか
引用返信 編集キー/
■30470 / inTopicNo.18)  Re[5]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ .SHO (516回)-(2008/12/24(Wed) 15:39:35)
No30469 (まいか さん) に返信

> どの様にすれば二度手間は防げるのでしょうか
> 教えて頂けないでしょうか

「Excelファイルを作成しようとすると出るエラー」

「System.IO.File.Move("C:\Excel.xls", "C:\Excel.xls")で出るエラー」
は、同じですよね?
引用返信 編集キー/
■30475 / inTopicNo.19)  Re[4]: VB.NETで同名のファイルが開かれているかどうか
□投稿者/ まいか (47回)-(2008/12/24(Wed) 16:12:59)
.SHOさんありがとうございます
確かに、エクセルを作成しようとすると出るエラーとSystem.IO.File.Move("C:\Excel.xls", "C:\Excel.xls")で出るエラーは同じです。
どちらも、開いているのに作成、ないしはMoveのエラーは同種です
引用返信 編集キー/
■30476 / inTopicNo.20)  Re[5]: VB.NETで同名のファイルが開かれているかどうか
 
□投稿者/ .SHO (518回)-(2008/12/24(Wed) 16:18:20)
No30475 (まいか さん) に返信

> 確かに、エクセルを作成しようとすると出るエラーとSystem.IO.File.Move("C:\Excel.xls", "C:\Excel.xls")で出るエラーは同じです。
> どちらも、開いているのに作成、ないしはMoveのエラーは同種です

ですよね。
ですから、わざわざMoveをtryで捕らえなくても
作成時のエラーをtryで捕らえればいいですよね。
そうすれば、Moveの確認から作成までの間に
別の処理に割り込まれる心配もなくなりますし。
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -