2013-07-18 3 views
-6

У меня есть рабочая тетрадь 1 со 100 рабочими листами.
У меня есть книга 2 с 200 рабочими листами.excel vba сравнить и скопировать рабочие листы из 2 файлов excel

мне нужно выполнить 2 задачи:

  • Для тех существующих рабочих листов (то же имя листа в обеих книгах), я хочу, чтобы удалить книги 1 содержание рабочего листа (колонка AZ) и скопировать содержание (колонка А-Я) из книги 2 заказать 1.

  • для тех недостающих рабочих листов в книге 1, я хочу, чтобы скопировать весь лист из книги 2 к книге 1.

пожалуйста посоветуйте если спасибо.

+0

Цель любого кода, который вы написали бы слишком хорошо. Или мы должны делать ваши домашние задания? – mike27015

+1

спасибо, майк, это помогает облегчить мою проблему. – user1884324

ответ

-3

Прежде всего вам нужно прокрутить все ваши рабочие листы для обоих, открыть 2 книги и пропустить их, затем вы можете выбрать их, сравнить, если их имя существует на другом листе, если нет, вы его добавляете , в противном случае вы копируете контент с одного на другой, а в конце вы должны их сохранять. Решение в 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

+0

VBA и VB.NET - это два совершенно разных языка. Даже если вы перевели код C# на VB.NET, у вас не было бы того, что бы скомпилировалось или было полезно в VBA. –

Смежные вопросы