2013-05-13 30 views
5

C#windowsアプリケーションでは、 私は多くのExcelワークブックを持っていますが、私が望むものは、Excelワークブックのワークシートを単一のワークブックにコピーすることです。 これは可能ですが、そうするためにExcelブックを開く必要があります。Excelワークシートをコピーする方法c#winformsでExcelファイルを開かずに別のExcelブックにコピーしますか?

 Excel.Application app = new Excel.Application(); 

     app.Visible = true; 

     app.WindowState = XlWindowState.xlMinimized; 

     app.Workbooks.Add(""); 
     app.Workbooks.Add(@"Path\WorkBook1.xlsx"); 
     app.Workbooks.Add(@"Path\WorkBook2.xlsx"); 

     for (int i = 2; i <= app.Workbooks.Count; i++) 
     { 
      int count = app.Workbooks[i].Worksheets.Count; 

      app.Workbooks[i].Activate(); 
      for (int j = 1; j <= count; j++) 
      { 
       Excel._Worksheet ws = (Excel._Worksheet)app.Workbooks[i].Worksheets[j]; 

       ws.Select(true); 
       ws.Cells.Select(); 

       Excel.Range sel = (Excel.Range)app.Selection; 
       sel.Copy(Type.Missing); 

       Excel._Worksheet sheet = (Excel._Worksheet)app.Workbooks[1].Worksheets.Add(
        Type.Missing, Type.Missing, Type.Missing, Type.Missing 
        ); 

       sheet.Paste(Type.Missing, Type.Missing); 

       sheet.Name = app.Workbooks[i].Worksheets[j].Name; 
      } 


     } 

     app.DisplayAlerts = false; 
     app.Workbooks[3].Close(); 
     app.Workbooks[2].Close(); 
     app.DisplayAlerts = true; 

     Cursor = Cursors.Default; 

     MessageBox.Show("Successfully Generated Excel...!", "Excel Tool", MessageBoxButtons.OK, MessageBoxIcon.Information); 

エクセルシートを開かずにすべてのデータをスタイルでコピーできますか?

+0

Excelファイルを開かずにワークブックから単一シートをコピーすることはできません。ただし、コピー操作をバックグラウンドで実行したい場合は、別のExcelアプリケーションでコピー操作を実行できます。一度、スタートアップマクロを含むテンプレートシートをコピーしなければなりませんでした。このテンプレートは、マクロをオフにして別の(見えない)Excelアプリケーションで開く必要がありました。 – StuartRedmann

答えて

6

ワークシートの内容を選択してコピーせずにワークシートとそのすべての内容と書式をコピーするには、Worksheet.Copyを使用できます。あなたはそのようにそれを使用したい:場合

Excel._Worksheet ws = (Excel._Worksheet)app.Workbooks[i].Worksheets[j]; 
Excel._Worksheet sheet = (Excel._Worksheet)app.Workbooks[1].Worksheets.Add(
       Type.Missing, Type.Missing, Type.Missing, Type.Missing 
       ); 
ws.Copy(Before: sheet); 

、しかし、あなたが実際にあなたの質問で何を意味するのか、その後、あなたは、ファイルを開かずに一つの共通のワークブックにワークブックの内容をコピーしたいと私ドンでありますそれは可能だと信じていない。データにアクセスするには、ファイルを開く必要があります。

+0

それは質問への答えではありません! –

+0

投稿のタイトルだけでなく、実際の質問を引用するには:「Excelシートを開くことなく可能ですか、すべてのデータをスタイルでコピーしますか?」これでシートは開かず、すべてのデータがコピーされます。シートをコピーします。 – Adrian

+0

あなたは閉じられたブックにそれを実行できますか?私は確信していません...あなたはそれをテストしましたか? –

関連する問題