11

問題: Excel スプレッドシート テンプレートの読み込み。別のファイル名で保存コマンドを使用し、相互運用オブジェクトを終了します。これにより、元のテンプレート ファイルが保存されます。好かれる結果ではありません。

public void saveAndExit(string filename)
{        
    excelApplication.Save(filename);
    excelApplication.Quit();
}

開かれた元のファイルは c:\testing\template.xls です。渡されるファイル名は c:\testing\7777 (日付).xls です。

誰か答えがありますか?

(wbk.Close() にはパラメーターを渡す必要がありますが、私が選んだ答えは最も正確で完全なものでした。ありがとう。)

4

4 に答える 4

8

Excelの相互運用はかなり苦痛です。私は自分が持っていた古いプロジェクトを掘り起こし、少しいじくり回しました。これがあなたが探しているものだと思います。他のコメント投稿者は正しいですが、少なくとも私の経験では、VBAで同じオブジェクト(相互運用ラッパーなし)を使用した場合に予想されるよりも、SaveAs()の呼び出しには多くのことがあります。

Microsoft.Office.Interop.Excel.Workbook wbk = excelApplication.Workbooks[0];  //or some other way of obtaining this workbook reference, as Jason Z mentioned
wbk.SaveAs(filename, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, 
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing);
wbk.Close();
excelApplication.Quit();

お奨めはそれらすべてのType.Missingsが大好きです。しかし、私はそれらが必要だと思います。

于 2008-08-27T00:02:59.557 に答える
1

ExcelApplicationを使用する代わりに、Workbookオブジェクトを使用して、SaveAs()メソッドを呼び出すことができます。そこに更新されたファイル名を渡すことができます。

于 2008-08-26T23:53:28.580 に答える
0
  1. Ditto on the SaveAs
  2. Whenever I have to do Interop I create a separate VB.NET class library and write the logic in VB. It is just not worth the hassle doing it in C#
于 2008-08-27T14:49:42.937 に答える
0

ワークシートから名前を付けて保存を試しましたか?

于 2008-08-26T23:48:04.693 に答える