|
オショウ様、aetos様、ぽぴ王子様、Hongliang様、魔界の仮面弁士様。 ありがとうございました。
今回は、魔界の仮面弁士様の方法で、無事に解決いたしました。
■No37335 (オショウ さん) に返信 > Excelがロックするので、無理でしょう・・・ 私も無理だと思ったのですが、例えばメモ帳(NotePad)は通常通り開けますし、 他のエディタ(秀丸など)では、エラーメッセージの後、読み取り専用で開くなど、 全くアクセス出来ないわけではないことが分かりました。
■No37333 (aetos さん) に返信 > というのは、StreamReader のコンストラクタにファイル名を渡したところで例外が出ていたりします? はい、その通りです。
> ファイル名を受け取る StreamReader のコンストラクタでは、読み取り専用で開くという指定ができないようですね。 > File.OpenRead で得た Stream から StreamReader を作ってみてはどうでしょうか。 ファイルのオープン1つ取っても、様々な方法があるのですね。 大変、勉強になります。
■No37334 (ぽぴ王子 さん) に返信 > Excel が開いたときにファイルを読み取りも不可にしていると難しいですが、Excel 2007 では開いた > 状態でも読み取り専用であれば他のプロセスから開けるようでした。 はい、読み取り専用であれば、Excelで開いていても、他のプロセスから開くということは分かりました。 だったら、何らかの方法があるのだろうと思い、質問させていただきました。
> # まあ、Excel が開いてるときに開くんじゃねえよ!というのが正論ではあります。 > # 自分もそれを指示します(つまり、Excelと同時に開くという仕様がマズい) は、はい。正直、そう思ったのです。 でも、実際の現場の作業の様子からして、そう言い放つのは厳しいものがありました・・。
■No37336 (Hongliang さん) に返信 > XmlDocument.Load(String) はそもそも読み取り専用で開きますが。XmlDocument への変更とファイルを同期するわけでもありませんからね。 そうなのですか。失礼しました。 MSDNで、「XmlReader は、XML データのストリームへの前方向の読み取り専用アクセスを提供します。」 と書かれていたのを、逆に「XmlDocument.Loadは読み取り専用ではない」という解釈をしておりました。
■No37338 (魔界の仮面弁士 さん) に返信 > Dim fs As New FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) > doc.Load(fs) 今回は、この方法で、エラーが発生しなくなりました。 Loadメソッドの引数に、Streamなどがあるのは見ていたのですが、コーディング方法が分からずに読み飛ばしておりました。
本当に、ありがとうございました。
|