名前 題名 ▼ Mr.XRAYさん > ▼ Nagaさん > > > 自分も拡張子で制御を提案したのですが却下されました... > > (今度ファイル形式が変わったときの拡張子が何かわからないからとか・・・) > > というより,新しいバージョンを導入した時に,その新しいバージョンの > ファイルが扱えなる可能性の問題ではないかと. > > 完全な回避策はないと思います. > 考えられる方法としては,次のようなものでしょうか. > > (方法 1 ) > 将来のことを考慮して,ダイアログをスキップしないで導入する > http://support.microsoft.com/kb/919026/ja > > (方法 2) > エクセルのバージョンと拡張子の条件によってダイアログを表示しないようにする > そうすれば,Excel 2007 以降のエクセルを導入してもアプリはそのまま使用可能となる > 当然,判定には Excel 2007 以降の拡張子名を使用しないようにする > 古いエクセルのブックの拡張子名は確実に既知なので,問題はない,と思う > ExcelObj.DisplayAlerts := False; > にすれば,警告関係のダイアログは一切現れなくなる > > if (ExcelObj.Version <= 11.0) and (FileExt = '.xls') then begin > ^^^^^^^^^^^^^^^^^ > この部分は必要に応じて変更 > //開いてもいいよん > end else > if (ExcelObj.Version > 11.0) then begin > //開いてもいいよん > end else begin > //ダメ!! ダメよ! ダメ! > end; > 等... > もちろん,この方法でも,更に新しい拡張子を扱うバージョンが現れると > 対応コードを追加する必要があります. > > (方法 3) > ダイアログの表示をフックして,表示開始前に終了させてしまう. > そのダイアログは,エクセルが表示しています. > エクセルは別アプリです. > したがって,グロバールフックということになります. > Excel 2007 以上では,そのダイアログは現れないので,このあたりも工夫が必要です. > これらの警告ダイアログのクラス名は全て #32770 です. > ダイアログのタイトルには必ず Microsoft Excel があります. > > もちろん,この方法でも,更に新しいバージョンが現れると, > どんなダイアログが使われるかは予想できません. > > http://mrxray.on.coocan.jp/Delphi/plSamples/270_HookCBTCreate.htm > http://mrxray.on.coocan.jp/Delphi/plSamples/280_HookCBTActivate.htm > 等... > > ----------- 方法の説明終り ------------------------------- > > 結果: > 未来は予測,予想できない.ということになります. > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link