Добрый день! Необходимо заполнять данными порядка 100 файлов каждый месяц(их число растет), предварительно преобразовав их. Возможно ли это автоматически? Т.е. имеется общий файл с вкладками(выгруженный из программы) и папка с макетами, которые нужно заполнить определенным образом(преобразовать таблицу в столбец, подсчитать итого внизу). Файлы прилагаю
Добрый день! Необходимо заполнять данными порядка 100 файлов каждый месяц(их число растет), предварительно преобразовав их. Возможно ли это автоматически? Т.е. имеется общий файл с вкладками(выгруженный из программы) и папка с макетами, которые нужно заполнить определенным образом(преобразовать таблицу в столбец, подсчитать итого внизу). Файлы прилагаюkatrinazima
Все ли файлы, которые Вы заполняете, совершенно одинаковы? Если отличаются, то чем и как? Я правильно понимаю, что отдельный лист в "центральном" файле содержит данные для отдельного макета?
katrinazima, здравствуйте.
Все ли файлы, которые Вы заполняете, совершенно одинаковы? Если отличаются, то чем и как? Я правильно понимаю, что отдельный лист в "центральном" файле содержит данные для отдельного макета?Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Rioran, да, "центральный" файл содержит 1 лист, а на самом деле их порядка 100 и данные из него за месяц перенести в первый файл(макет, как я назвала). Макетов например в следующем месяце 111, файлов с мощностями может быть 1(но очень редко), 2 или 3(некоторые устройства не опрашиваются с первого раза и профиль пустой). Различаются они объектами учета, внизу лист подписан какая именно ТП опросилась и в макете в ячейке А2 подписано на какую ТП макет
Rioran, да, "центральный" файл содержит 1 лист, а на самом деле их порядка 100 и данные из него за месяц перенести в первый файл(макет, как я назвала). Макетов например в следующем месяце 111, файлов с мощностями может быть 1(но очень редко), 2 или 3(некоторые устройства не опрашиваются с первого раза и профиль пустой). Различаются они объектами учета, внизу лист подписан какая именно ТП опросилась и в макете в ячейке А2 подписано на какую ТП макетkatrinazima
При прикреплении файлов сюда, названия их меняются, а так каждый макет имеет название с номером ГУ и датой(менять их я не могу). Также можно сделать таблицу соответствия между кодом ГУ, названием ТП, номером счетчика. Сейчас я вручную все это делаю
При прикреплении файлов сюда, названия их меняются, а так каждый макет имеет название с номером ГУ и датой(менять их я не могу). Также можно сделать таблицу соответствия между кодом ГУ, названием ТП, номером счетчика. Сейчас я вручную все это делаюkatrinazima
Ответ, как и в 99,(9)% случаев - да, возможно. Для реализации как минимум Вам хорошо помогут вопросы к Гуглу:
1). "VBA excel перебор строк" 2). "VBA excel обращение к ячейке", обратите внимание на объект Range, который позволит в одну строку кода записать значение на целый день с 1-го по 24-й часы. 3). "VBA excel цикл For Each" - для перебора страниц Вашего "центрального" файла. 4). "VBA excel оператор ветвления IF" - чтобы указать макросу, в какой файл с какой вкладки заливать данные. 5). "VBA excel перебрать файлы в папке", методы перебора с помощью команды Dir() хорошо подходят.
Ответ, как и в 99,(9)% случаев - да, возможно. Для реализации как минимум Вам хорошо помогут вопросы к Гуглу:
1). "VBA excel перебор строк" 2). "VBA excel обращение к ячейке", обратите внимание на объект Range, который позволит в одну строку кода записать значение на целый день с 1-го по 24-й часы. 3). "VBA excel цикл For Each" - для перебора страниц Вашего "центрального" файла. 4). "VBA excel оператор ветвления IF" - чтобы указать макросу, в какой файл с какой вкладки заливать данные. 5). "VBA excel перебрать файлы в папке", методы перебора с помощью команды Dir() хорошо подходят.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Rioran, спасибо большое за совет! Но к сожалению от того, что поискала в Гугле указанные операторы, ничего не изменилось, программировать не умею . Может подскажете, как примерно, должен выглядеть код? поменять что-то в готовом коде еще смогу,а написать с нуля не получается, просто лес дремучий
Rioran, спасибо большое за совет! Но к сожалению от того, что поискала в Гугле указанные операторы, ничего не изменилось, программировать не умею . Может подскажете, как примерно, должен выглядеть код? поменять что-то в готовом коде еще смогу,а написать с нуля не получается, просто лес дремучийkatrinazima
Все макеты имеют однотипные названия с разными кодами ГУ "Июль 2014_ГУ_22999_072014.xls", но этих кодов нет в профиле, соответствие устанавливаю через название ТП внутри файла(и таблица соответствия есть). Не понимаю, как к ним обращаться
Все макеты имеют однотипные названия с разными кодами ГУ "Июль 2014_ГУ_22999_072014.xls", но этих кодов нет в профиле, соответствие устанавливаю через название ТП внутри файла(и таблица соответствия есть). Не понимаю, как к ним обращатьсяkatrinazima
Сейчас я каждый профиль копирую в отдельный файл и применяю вот такой макрос:[vba]
Код
Sub Макрос1() d = 8 f = 8 For rwIndex = 8 To 38 ActiveSheet.Cells(d, 1) = ActiveSheet.Cells(f, 7) For rwInd = 9 To 32 ActiveSheet.Cells(d, 4) = ActiveSheet.Cells(rwIndex, rwInd) d = d + 1 Next rwInd f = f + 1 Next rwIndex End Sub
[/vba] Потом копирую в макет. У меня уходит 2-3 дня(с проверкой данных).А макетов все прибавляется. Помогите
Сейчас я каждый профиль копирую в отдельный файл и применяю вот такой макрос:[vba]
Код
Sub Макрос1() d = 8 f = 8 For rwIndex = 8 To 38 ActiveSheet.Cells(d, 1) = ActiveSheet.Cells(f, 7) For rwInd = 9 To 32 ActiveSheet.Cells(d, 4) = ActiveSheet.Cells(rwIndex, rwInd) d = d + 1 Next rwInd f = f + 1 Next rwIndex End Sub
[/vba] Потом копирую в макет. У меня уходит 2-3 дня(с проверкой данных).А макетов все прибавляется. Помогитеkatrinazima
[/vba] Следующий кусок позволит перебирать файлы по одному, открывая каждый (где sFiles - текст полного названия файла включая формат). При этом открытый файл становится активным и Вам нужно будет переделать с этим учётом Ваш макрос из сообщения 10 (задать прямые ссылки типа ThisWorkbook.Worksheets("Имя_листа").Cells...):
[vba]
Код
sFiles = Dir(sFolder & "*.xls*")
Do While sFiles <> "" Workbooks.Open sFolder & sFiles 'Какой-нибудь Ваш код sFiles = Dir Loop
[/vba] Создайте отдельный лист в центральном файле, где в первом столбце будут имена листов, а во втором - имена файлов. Тогда вы сможете, проходя циклом по названиям файлов (переменная sFiles у нас уже есть), найти строку в которой есть название листа. Это название листа присвоить переменной, например sSheet.
katrinazima, несколько подсказок.
Следующая часть кода позволяет выбрать папку для перебора файлов, сохраняя ссылку на папку в виде текста в переменную sFolder:
[vba]
Код
With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub sFolder = .SelectedItems(1) End With
[/vba] Следующий кусок позволит перебирать файлы по одному, открывая каждый (где sFiles - текст полного названия файла включая формат). При этом открытый файл становится активным и Вам нужно будет переделать с этим учётом Ваш макрос из сообщения 10 (задать прямые ссылки типа ThisWorkbook.Worksheets("Имя_листа").Cells...):
[vba]
Код
sFiles = Dir(sFolder & "*.xls*")
Do While sFiles <> "" Workbooks.Open sFolder & sFiles 'Какой-нибудь Ваш код sFiles = Dir Loop
[/vba] Создайте отдельный лист в центральном файле, где в первом столбце будут имена листов, а во втором - имена файлов. Тогда вы сможете, проходя циклом по названиям файлов (переменная sFiles у нас уже есть), найти строку в которой есть название листа. Это название листа присвоить переменной, например sSheet.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Сообщение отредактировал Rioran - Четверг, 28.08.2014, 11:54