4

私は Delphi で書かれた Excel 自動化アプリケーションを持っています。これは、特定の Excel ワークブックにアクセスし、いくつかの内部ロジックを適用してシートのさまざまなデータを抽出します。

Excel 2003 および 2007 で何年も完全に機能しています。

最近、一部のユーザーが Excel 2010 を使用しています。これらのユーザーでは、アプリケーションを終了すると、Excel はユーザーに変更されていないワークシートを保存するように求めるダイアログ ボックスを表示します。このメッセージは、数式のバージョンが新しい 2010 形式で保存されることを示しています。申し訳ありませんが、これは英語のオフィス パッケージではないため、正確な言葉はわかりません。

Excel 2010 でこの迷惑で役に立たないボックスが表示されないようにするにはどうすればよいですか?

ほとんどのユーザーは Excel 2007 を使用しているため、アプリを実行しているユーザーの実際の Excel バージョンに関係なく、アプリケーションで処理する必要があるファイルのほとんどはその形式であり、将来的にも同様になるため、すべてのファイルを移行します。オプションではありません。

4

1 に答える 1

12

これは、自動化によって Excel シートを印刷するためのルーチンです。Excel の保存ダイアログがときどきポップアップするという問題が発生した後、このルーチンですべての問題が解決しました。

procedure PrintExcelReport( Const filename : String;
                                  sheet    : Integer);
{- Sheet is counted from 1 and upwards !! }
Var 
  App : OleVariant;
begin
  App:= CreateOleObject('Excel.Application');
  Try
    App.Visible:= 0;
    App.WorkBooks.Open(ExpandUNCFileName(filename),1);  // Open read only
    Try
      App.ActiveWorkBook.WorkSheets[sheet].Select;
      App.ActiveWorkBook.ActiveSheet.PrintOut; // Prints active sheet
    Finally
      App.ActiveWorkBook.Saved:= 1;
      App.DisplayAlerts:= 0;
      App.ActiveWorkBook.Close(SaveChanges:= 0);
    End;
  Finally
    App.Quit;
    App:= UnAssigned;
  End;
end;

用途に合わせて調整してください。

于 2012-10-23T19:42:14.953 に答える