Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel vba从2个excel文件中比较和复制工作表_Excel_Vba_Worksheet - Fatal编程技术网

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

excel vba从2个excel文件中比较和复制工作表,excel,vba,worksheet,Excel,Vba,Worksheet,我有100张工作表的练习册1。 我有200张工作表的练习册2 我需要执行两项任务: 对于两本书中相同工作表名称的现有工作表,我想删除第1册工作表内容列A-Z,并将内容列A-Z从第2册复制到第1册 对于工作簿1中缺少的工作表,我想将整个工作表从第2册复制到第1册 请告知是否有任何现有的在线vba,谢谢。首先,您需要循环浏览这两个工作表的所有工作表,打开两个工作簿,循环浏览这两个工作表,然后您可以选择它们,比较它们的名称是否存在于其他工作表中,如果不存在,则添加它,否则,将内容从一个复制到另一个,最

我有100张工作表的练习册1。 我有200张工作表的练习册2

我需要执行两项任务:

对于两本书中相同工作表名称的现有工作表,我想删除第1册工作表内容列A-Z,并将内容列A-Z从第2册复制到第1册

对于工作簿1中缺少的工作表,我想将整个工作表从第2册复制到第1册


请告知是否有任何现有的在线vba,谢谢。

首先,您需要循环浏览这两个工作表的所有工作表,打开两个工作簿,循环浏览这两个工作表,然后您可以选择它们,比较它们的名称是否存在于其他工作表中,如果不存在,则添加它,否则,将内容从一个复制到另一个,最后保存。在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();
         }
    }
}

寻找您编写的任何代码也很好。或者我们应该做你的家庭作业吗?谢谢,迈克,这确实有助于缓解我的问题VBA和VB.NET是两种完全不同的语言。即使您将C代码翻译成VB.NET,您也不会有编译或对VBA有用的东西。