excel vba比较&从2个excel文件中复制工作表

时间:2013-07-18 09:24:26

标签: excel vba worksheet

我的工作簿1包含100个工作表 我有200个工作表的工作簿2。

我需要执行2项任务:

  • 对于那些现有的工作表(两本书中的工作表名称相同),我想删除第1册工作表内容(第AZ列)和从第2册到第1册的内容(第AZ列)。

    < / LI>
  • 对于工作簿1中缺少的工作表,我想将整本工作表从第2册复制到第1册。

请告知是否存在任何在线vba,谢谢。

1 个答案:

答案 0 :(得分:-3)

首先,您需要遍历所有工作表,打开两个工作表,然后循环浏览两个工作表,然后您可以选择它们,比较它们的名称是否存在于另一个工作表中,如果没有,则添加它,否则,您将内容从一个复制到另一个,最后您应该保存它们。在C#中的解决方案,请参阅VB.NET中的解决方案链接,类似的是申请VBA。

Excel.Workbook workbook;
workbook = xlsApp.Workbooks.Open("first file", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Excel.Workbook workbook2;
workbook2 = xlsApp.Workbooks.Open("second file", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
foreach (Excel.Worksheet sheet in workbook.Sheets)
{
    workbook.Activate();
    sheet.Activate();
    foreach (Excel.Worksheet sheet2 in workbook2.Sheets)
    {
         workbook2.Activate();
         sheet2.Activate();
         if(sheet2.Name.Equals(sheet.Name))
         {
             sheet.Range("A1:Z65535").Copy(Missing.Value);
             sheet2.Range(cellmapp).PasteSpecial(); // where cellmap = A1:Z65535
         }
         else
         {
             Excel.Worksheet newWorksheet;
             newWorksheet = (Excel.Worksheet)this.Application.Worksheets.Add();
             sheet.Range("A1:Z65535").Copy(Missing.Value);
             newWorksheet.Range(cellmapp).PasteSpecial(); // where cellmap = A1:Z65535
             snewWorksheet.Range("A1:Z65535").Copy(Missing.Value);
             newWorksheet.Columns.AutoFit();
         }
    }
}

http://www.developerfusion.com/tools/convert/csharp-to-vb/?batchId=36c4611b-294a-4f87-a762-1016ad46d508