私は2つの異なるExcelファイルを持ち、両方でいくつかの変更を行います。 [保存]をクリックすると、各ファイルに既存のファイルとそのファイルを上書きするかどうかを確認するメッセージが表示されます。代わりにSave()コマンドでこれを回避することはできますが、2つの異なる上書きプロンプトが表示される理由を理解しようとしています。2つの異なるSaveAs上書きプロンプトが表示されるのはなぜですか?
すべてが正しく保存され、エラーは発生しません。
私のC#コードでは、バージョンMS Excel 14.0オブジェクトライブラリを使用しています。 (Excel 2010)
私が使用しているIDEは、MS Visual Studio 2015コミュニティです。
オペレーティングシステムはWin 7 x64です。ハードウェアフレーバーAMD。
ありがとうございます。
名前を付けて保存]ダイアログ1:2
ダイアログ
名前を付けて保存、私はこれをテストするために使用されるコード...あなたはここを参照してください何
using System;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;
namespace SO_Question
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
EditSaveExcelFiles();
}
public static void EditSaveExcelFiles()
{
object misValue = System.Reflection.Missing.Value;
string file1 = @"C:\Users\John\Documents\New Folder\MyExcel.xlsx";
string file2 = @"C:\Users\John\Documents\New Folder\MyExcel2.xlsx";
Excel.Application ExcelApp = new Excel.Application();
Workbook workBook1 = ExcelApp.Workbooks.Open(file1, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
Workbook workBook2 = ExcelApp.Workbooks.Open(file2, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
Worksheet workSheet1 = (Worksheet)workBook1.Worksheets.get_Item("Sheet1");
Worksheet workSheet2 = (Worksheet)workBook2.Worksheets.get_Item("Sheet1");
// do some stuff
workSheet1.Cells[1, 1] = "Grazer14";
workSheet2.Cells[1, 1] = "Grazer24";
// Different overwrite dialogs?
try
{
workBook1.SaveAs(file1, Excel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
workBook2.SaveAs(file2, Excel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
}
catch (Exception e)
{
//when user clicks "No" or "Cancel"
//MessageBox.Show("No or Cancel: " + e.StackTrace);
}
workBook2.Close(true, misValue, misValue);
workBook1.Close(true, misValue, misValue);
ExcelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook1);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook2);
System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelApp);
}
}
}
どのようにそれが最初のスクリーンショットがパスに「新規フォルダ」を欠落していることになることができますか?あなたが投稿したコードを使ってスクリーンショットが撮られたことは確かですか? – dlatikay
唯一の違いは、保存しているファイル形式だけです。違いがその原因である必要があります。インタラクティブに異なるSaveAsオプションを試してみたらどうなりますか? – ChrisF
@dlatikayはい、以前の画像でした。今更新しましたありがとうございます。 – JohnG