Delphi2010で
Excel97-2003の2重チェックをするには
どうしたらよろしいのでしょうか?
こんにちは.Mr.XRAYと申します.
ワードやエクセルの操作関係のプログラムを作ることがあります.
勉強不足だと思いますが,いままで,
>Excel97-2003の2重チェック
という表現を聞いたことがありません.
質問とは関係ないと思いますが,もし差し支えなければ,どのようなチェックのこと
か,後学のために,教えていただけないでしょうか.
「そんなことも知らないのか!」と言うのであれば,無視してください.
すいません。質問がおかしかったです。
2重チェックではなく、2重起動チェックです。
test.xlsが既に起動されている状態で、
Delphiからこのtest.xlsを現状読込めてしまうのですが、
これを読込めなくするためにはどうしたらよろしいですか?
Mr.XRAYです.
ありがとうございます.
>2重チェックではなく、2重起動チェックです。
これもよく理解できませんが(失礼!!)
エクセルのブックは,例えばエクスプローラ等から起動する場合,
複数のエクセルがインストールされていれば,
エクセルのバージョンを選択して起動できます(プログラムの選択等でも).
Delphi等,プログラムで操作するエクセルのバージョンは,どのようにエクセルのブックを扱うかにもよります.
少なくても,エセルのオブジェクトを生成してエクセルを起動する場合は,
カレントバージョンと言われるエクセルを操作することになります.
>これを読込めなくするためにはどうしたらよろしいですか?
エクセルのブックを表示しないようにするのでしょうか?
エクセルそのものを起動しないようにするのでしょうか?
読み込めないように,ということなので,前者?
>エクセルのバージョンを選択して起動できます(プログラムの選択等でも).
プログラムの選択でなければ,例えば拡張子の関連付けでしょうか.
>>2重チェックではなく、2重起動チェックです。
>これもよく理解できませんが(失礼!!)
エクセル97が起動していて,更に別にエクセル2003が起動しても,
決して二重起動ではありません.
なぜならば,それぞれ別のプログラムですから.
エクセルがファイルを開く時は、読込専用で開いたので無ければ後からファイルを開く時に書き込みモードでファイルを開こうとした時にエラーになります。
なんで、
TFileStream.Create('test.xls', fmOpenReadWrite)
が成功するかどうかでチェックしたらいいんじゃないでしょうか?
こんにちは,Mr.XRAYです.
バージョンとの違いとか,ブックを読み込ませないとか,希望する動作が理解できませんが,
もし,単に「エクセルが既に起動しているかをチェック」というのであれば,
[エクセルが起動中かを調査]
http://mrxray.on.coocan.jp/Delphi/plExcelEx/T_IsActiveExcel.htm
で可能です.
説明が悪くてごめんなさい。
具体的に言うと
Excel := CreateOleObject('Excel.Application');
WorkBook :=Excel.WorkBooks.Open(FileName := 'test.xls', readOnly := False);
他のプロセスで、test.xlsが起動されているかをチェックしたいのです。
何度もすいません。
こんにちは,Mr.XRAYです.
>他のプロセスで、test.xlsが起動されているかをチェックしたいのです。
でしたら,auさんの方法でいいと思います.
う〜ん,最初の 「Excel97-2003の2重チェックをするには」が頭に残って,考えすぎてしまいました.
>Delphiからこのtest.xlsを現状読込めてしまうのですが、
で気づくべきでしたね.
読解力がまだまだ不足です,勉強し直してきます.
auさんに脱帽,って,理解できなかったのは私だけか?
ありがとうございます。
うまくいきました。
ツイート | ![]() |