2

SaveAsメソッドのコードは次のとおりです。

m_FilePath="D:\Build\abc.xlsx"
m_objOpt=System.Reflection.Missing.Value;
m_objBook.SaveAs(m_FilePath, m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt, XlSaveAsAccessMode.xlShared,
    m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);

私の質問は、互換性チェッカーを無効にする方法ではなく、すでに何度も回答されています。私の質問は、なぜ互換性チェッカーが登場するのかということです。Excel は、ファイルに Excel 2003 の痕跡があることをどのように認識しますか。D:\Build は空です。

4

2 に答える 2

5

特定のバージョンの Excel ファイルを作成する場合は、正しいFileFormatInSaveAsメソッドを設定する必要があります。

パスに設定.xlsしても、ファイル形式を指定しない場合は、実行中のバージョンの Excel を使用して、SaveAsメソッドを使用してファイルを保存します。これは、Excel 1997 ~ 2003 のファイルを Excel 2007 以降で開いた場合SaveAs、パラメータを設定しないと、メソッドはデフォルトでファイルを Excel 2007 ファイルとして保存することを意味しFileFormatます。

オプションのオブジェクト。ファイルを保存するときに使用するファイル形式。有効な選択肢のリストについては、FileFormat プロパティを参照してください。既存のファイルの場合、デフォルトの形式は最後に指定されたファイル形式です。新しいファイルの場合、デフォルトは、使用されている Excel のバージョンの形式です


システムにインストールされている Excel に応じて、2003 と 2007 の両方で保存する場合、FileFormat はどうすればよいですか?

xlWorkbookDefaultシステムにインストールされている Excel に応じて、2003 と 2007 の両方で保存する場合は、ファイル形式を設定しないでください。

ファイル名に正しい拡張子 (.xls または .xlsx) を設定するには、現在のバージョンの Excelを検出する必要があります。拡張子が使用されている実際のファイル形式に対応していない場合、ファイルを開くときに、拡張子がファイル形式に対応していないというメッセージが表示されます。

または、提案された解決策は fileName に拡張子を設定していないようで、Excel のバージョンを検出した後に指定した fileFormat に基づいて、Excel に正しい拡張子で fileName を完成させます。ここで使用しています:

  • 56 :xlExcel8 エクセル8
  • 46 : xlXMLSpreadsheet Excel スプレッドシート形式。

についてのリンクFileFormat


また、Excel 2003 ファイルで Excel 2007 の一部の機能を使用している場合、互換性チェックが表示されなくなることはありません。メッセージを非表示にするには、Application.DisplayAlertsプロパティを に設定しますfalse

于 2013-08-24T09:43:45.640 に答える