-2

「Excel 2007 アドイン」を開発し、「Microsoft.Office.Interop.Excel.Application.ActiveSheet」を使用しています。別のファイルに保存するにはどうすればよいですか?

4

3 に答える 3

1

アクティブなシートをオブジェクトに割り当ててから、Microsoft.Office.Interop.Excel.Worksheetこのオブジェクトの SaveAs メソッドを次のように呼び出す必要があります。

using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Excel.Application ap = new Excel.Application();
            Excel.Workbook wb = ap.Workbooks.Open(@"C:\whatever.xlsx");
            Excel.Worksheet ws = wb.ActiveSheet;

            ws.SaveAs(@"C:\somethingelse.xlsx");

            ap.Workbooks.Close();
            Marshal.ReleaseComObject(ap);
        }
    }
}
于 2012-09-11T11:30:51.490 に答える
0

VB.NET でアクティブ シートを保存する方法を説明する投稿を見つけました。

Sub test()
  ActiveSheet.Copy
  ActiveWorkbook.SaveAs Filename:="C:\MyFolder\MySubFolder\Test.xls"
  ActiveWorkbook.Close
End Sub

ただし、このロジックを C# で試すことができます。アクティブなシートを切り替えて、それぞれを個別に保存します。

これにより、それらが別々のワークブックに保存されます...

Sub test()

Dim iNoSheets As Integer
Dim i As Integer

iNoSheets = Worksheets.Count

For i = 1 To iNoSheets
Worksheets(i).Activate
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:="C:\Test" & i & ".xls"
ActiveWorkbook.Close
Next

End Sub 

そして今C#で:

public void SaveSheets()
{
for(int i = 0; i < Worksheets.Count; i++)
{
Worksheets[i].Activate();
ActiveSheet.Copy();
ActiveWorkbook.SaveAs(string.Format(@"C:\sheet{0}.xlsx",i));
ActiveWorkbook.Close();
}
}
于 2012-09-11T11:16:08.433 に答える