新しいワークシートを Excel ワークブックに追加し、これを C# Excel Interop の本の最後のワークシートにしようとしています。
それは本当に簡単に思えます。私は以下のコードでそれができると思いました:
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(@"C:\test\Test.xlsx");
workbook.Sheets.Add(After: workbook.Sheets.Count);
workbook.Save();
workbook.Close();
Marshal.ReleaseComObject(excel);
}
}
}
そのような幸運はありません。次の役立つエラーが表示されます。
COMException が処理されませんでした - HRESULT からの例外: 0x800A03EC
Microsoft.comでこのページを見つけたので、最初にシートを追加してから移動することを提案したので、以下に示すように試しました。この Web ページが Excel 95 をターゲットにしていることはわかっていますが、VBA はまだ使用できるので、まだ機能することを期待していました。
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(@"C:\test\Test.xlsx");
workbook.Sheets.Add();
workbook.Sheets.Move(After: workbook.Sheets.Count);
workbook.Save();
workbook.Close();
Marshal.ReleaseComObject(excel);
}
}
}
上記と同じエラーが発生します。また、メソッドとメソッドAfter
の両方で、最後のワークシートの名前をパラメーターとして文字列として渡そうとしましたが、うまくいきません!Add
Move
それが私が試したことなので、私の質問は、C# Excel Interop を使用してワークシートを Excel ワークブックに追加し、これをワークブックの最後のシートにする方法です。
ありがとう