2016-10-06 3 views
0

Хорошо, поэтому я работаю над созданием таблицы «поймать все».Как объединить два листа полностью - с разными названиями таблиц, форматом и названиями рабочих таблиц

Я работаю с клиентами, которые дают нам расценки, все в разных форматах и ​​выступлениях, но все в excel (.xlsx).

Цель состоит в том, чтобы сделать «инструмент excel», если вы это сделаете, щелкнув по кнопке, я смогу перейти к расписанию, которое я дал, и импортировать его в инструмент. Затем из этого инструмента я могу продолжать использовать другие скрипты VBA (которые я уже собрал вместе), чтобы захватить другие листы excel и, следовательно, сделать инструмент в хорошо загруженный файл с несколькими листами, включая всю информацию о клиенте.

Проблема, с которой я сталкиваюсь, заключается в том, что я получаю расписания от клиента с абсолютно никакой согласованностью. Они дают графики случайных имен, иногда они не используют таблицы, и они переименовывают листы всякого рода. До сих пор мне удалось найти способ автоматизации слияния двух таблиц, но он работает только в том случае, если расписание имеет то же местоположение и имена.

Любая идея любого обходного пути по этому вопросу?

возможно VBA скрипт, который будет открывать окна проводника, позвольте мне выбрать лист первенствовать мне нужно, и просто импортировать все в инструмент, все форматирование и листы независимо названия (ов) и количества?

+0

'Application.GetOpenFilename()' это хорошее место для начала: для остальной части вам нужно будет предоставить более подробную информацию о том, насколько переменными являются входные файлы. Нет никакого метода «импортировать файл независимо от структуры» - он должен быть адаптирован к вашим входам. –

+0

@Tim Williams - Итак; к сожалению, они отличаются настолько высокой степенью, что трудно дать точные данные. Тем не менее, я сделаю все возможное здесь. Я думаю, что трудная часть состоит в том, что они никогда не называют листы или листы вообще, ни одно имя. Например, иногда у нас есть «Расписание 10/06 объекта 12345.xslx», другое время его «Расписание 1.xslx». Кроме того, сами листы не соответствуют друг другу. иногда они называют их «Расписание» и «Коммуникационный план», в другое время они просто оставляют их по умолчанию Sheet1, Sheet 2 и Sheet3. Надеюсь, это сделало немного больше смысла. –

+0

Я думаю, если возможно, моя цель состояла бы в том, чтобы иметь возможность выбирать файл; и импортировать все листы, которые существуют на указанном листе. –

ответ

0

Хорошо, так что у меня есть:

 Sub HC_import() 
      Dim wb1 As Workbook, wb2 As Workbook, wb3 As Workbook 
      Dim Ret1 
      Dim Ret2 

      Set wb1 = ActiveWorkbook 

      On Error Resume Next 

      '~~> Get the Health Check File 
      Ret1 = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", _ 
      , "Please select the HC File") 
      If Ret1 = False Then Exit Sub 

      Set wb2 = Workbooks.Open(Ret1) 

      '~~> Copy STNHC Data from Health Check File 
     wb2.Activate 
     Sheets("STNHC").Select 
     ActiveSheet.ShowAllData 
     ActiveSheet.ListObjects(1).Unlist 
     Range("A1").Select 
     Range(Selection, Selection.SpecialCells(xlLastCell)).Select 
     Selection.Copy 


      '~~> Paste STNHC Data to Tool 
     wb1.Activate 

      Sheets.Add After:=ActiveWorkbook.Sheets(1) 
      ActiveSheet.Name = "HEALTH_CHECK" 
      Sheets("HEALTH_CHECK").Select 
      Range("A1").Select 
      Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks _ 
       :=False, Transpose:=False 
      Application.CutCopyMode = False 

     '~~> Copy PatchETL Data to Tool 
     wb2.Activate 
     Sheets("PatchETL").Select 
     ActiveSheet.ShowAllData 
     Range("A:I").Select 
     Selection.Copy 
End Sub 

Это хорошо работает, предполагая, что лист всегда называется «STNHC» - мне нужно что-то, что работает точно также; но это будет работать независимо от того, что вызывают листы.

0

Это невероятно смутно, однако, если я правильно вас понимаю ... Что делать, если вы берете все файлы excel, помещаете их в 1 папку, а затем пишите простой скрипт vbs, чтобы переименовать все файлы, содержащие «.xls» в указанную папку для согласованного имени файла, а затем сценарий проходит через те же файлы, чтобы переименовать все листы в то, что вам нужно, т.е. «STNHC». Тогда ваши файлы будут совместимы с вашим существующим инструментом?