Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Автоматически заполнить несколько файлов данными из одного - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Автоматически заполнить несколько файлов данными из одного
katrinazima Дата: Среда, 27.08.2014, 15:43 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Добрый день! Необходимо заполнять данными порядка 100 файлов каждый месяц(их число растет), предварительно преобразовав их. Возможно ли это автоматически? Т.е. имеется общий файл с вкладками(выгруженный из программы) и папка с макетами, которые нужно заполнить определенным образом(преобразовать таблицу в столбец, подсчитать итого внизу). Файлы прилагаю
К сообщению приложен файл: _2014__22999_07.xls (81.0 Kb)
 
Ответить
СообщениеДобрый день! Необходимо заполнять данными порядка 100 файлов каждый месяц(их число растет), предварительно преобразовав их. Возможно ли это автоматически? Т.е. имеется общий файл с вкладками(выгруженный из программы) и папка с макетами, которые нужно заполнить определенным образом(преобразовать таблицу в столбец, подсчитать итого внизу). Файлы прилагаю

Автор - katrinazima
Дата добавления - 27.08.2014 в 15:43
katrinazima Дата: Среда, 27.08.2014, 15:47 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Второй файл не прикрепился сразу
К сообщению приложен файл: _Microsoft_Exce.xls (32.0 Kb)
 
Ответить
СообщениеВторой файл не прикрепился сразу

Автор - katrinazima
Дата добавления - 27.08.2014 в 15:47
katrinazima Дата: Среда, 27.08.2014, 15:49 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
В итоге все макеты должны быть заполнены вот так
К сообщению приложен файл: 0624514.xls (72.5 Kb)
 
Ответить
СообщениеВ итоге все макеты должны быть заполнены вот так

Автор - katrinazima
Дата добавления - 27.08.2014 в 15:49
Rioran Дата: Среда, 27.08.2014, 16:16 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
katrinazima, здравствуйте.

Все ли файлы, которые Вы заполняете, совершенно одинаковы? Если отличаются, то чем и как?
Я правильно понимаю, что отдельный лист в "центральном" файле содержит данные для отдельного макета?


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеkatrinazima, здравствуйте.

Все ли файлы, которые Вы заполняете, совершенно одинаковы? Если отличаются, то чем и как?
Я правильно понимаю, что отдельный лист в "центральном" файле содержит данные для отдельного макета?

Автор - Rioran
Дата добавления - 27.08.2014 в 16:16
katrinazima Дата: Среда, 27.08.2014, 16:29 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Rioran, да, "центральный" файл содержит 1 лист, а на самом деле их порядка 100 и данные из него за месяц перенести в первый файл(макет, как я назвала). Макетов например в следующем месяце 111, файлов с мощностями может быть 1(но очень редко), 2 или 3(некоторые устройства не опрашиваются с первого раза и профиль пустой). Различаются они объектами учета, внизу лист подписан какая именно ТП опросилась и в макете в ячейке А2 подписано на какую ТП макет
 
Ответить
СообщениеRioran, да, "центральный" файл содержит 1 лист, а на самом деле их порядка 100 и данные из него за месяц перенести в первый файл(макет, как я назвала). Макетов например в следующем месяце 111, файлов с мощностями может быть 1(но очень редко), 2 или 3(некоторые устройства не опрашиваются с первого раза и профиль пустой). Различаются они объектами учета, внизу лист подписан какая именно ТП опросилась и в макете в ячейке А2 подписано на какую ТП макет

Автор - katrinazima
Дата добавления - 27.08.2014 в 16:29
katrinazima Дата: Среда, 27.08.2014, 16:36 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
При прикреплении файлов сюда, названия их меняются, а так каждый макет имеет название с номером ГУ и датой(менять их я не могу). Также можно сделать таблицу соответствия между кодом ГУ, названием ТП, номером счетчика. Сейчас я вручную все это делаю
 
Ответить
СообщениеПри прикреплении файлов сюда, названия их меняются, а так каждый макет имеет название с номером ГУ и датой(менять их я не могу). Также можно сделать таблицу соответствия между кодом ГУ, названием ТП, номером счетчика. Сейчас я вручную все это делаю

Автор - katrinazima
Дата добавления - 27.08.2014 в 16:36
Rioran Дата: Среда, 27.08.2014, 16:52 | Сообщение № 7
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Возможно ли это автоматически?

Ответ, как и в 99,(9)% случаев - да, возможно. Для реализации как минимум Вам хорошо помогут вопросы к Гуглу:

1). "VBA excel перебор строк"
2). "VBA excel обращение к ячейке", обратите внимание на объект Range, который позволит в одну строку кода записать значение на целый день с 1-го по 24-й часы.
3). "VBA excel цикл For Each" - для перебора страниц Вашего "центрального" файла.
4). "VBA excel оператор ветвления IF" - чтобы указать макросу, в какой файл с какой вкладки заливать данные.
5). "VBA excel перебрать файлы в папке", методы перебора с помощью команды Dir() хорошо подходят.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщение
Возможно ли это автоматически?

Ответ, как и в 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
Дата добавления - 27.08.2014 в 16:52
katrinazima Дата: Четверг, 28.08.2014, 09:01 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Rioran, спасибо большое за совет! Но к сожалению от того, что поискала в Гугле указанные операторы, ничего не изменилось, программировать не умею :'( . Может подскажете, как примерно, должен выглядеть код? поменять что-то в готовом коде еще смогу,а написать с нуля не получается, просто лес дремучий
 
Ответить
СообщениеRioran, спасибо большое за совет! Но к сожалению от того, что поискала в Гугле указанные операторы, ничего не изменилось, программировать не умею :'( . Может подскажете, как примерно, должен выглядеть код? поменять что-то в готовом коде еще смогу,а написать с нуля не получается, просто лес дремучий

Автор - katrinazima
Дата добавления - 28.08.2014 в 09:01
katrinazima Дата: Четверг, 28.08.2014, 09:17 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Все макеты имеют однотипные названия с разными кодами ГУ "Июль 2014_ГУ_22999_072014.xls", но этих кодов нет в профиле, соответствие устанавливаю через название ТП внутри файла(и таблица соответствия есть). Не понимаю, как к ним обращаться
 
Ответить
СообщениеВсе макеты имеют однотипные названия с разными кодами ГУ "Июль 2014_ГУ_22999_072014.xls", но этих кодов нет в профиле, соответствие устанавливаю через название ТП внутри файла(и таблица соответствия есть). Не понимаю, как к ним обращаться

Автор - katrinazima
Дата добавления - 28.08.2014 в 09:17
katrinazima Дата: Четверг, 28.08.2014, 10:32 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Сейчас я каждый профиль копирую в отдельный файл и применяю вот такой макрос:[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
Дата добавления - 28.08.2014 в 10:32
Rioran Дата: Четверг, 28.08.2014, 11:53 | Сообщение № 11
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
katrinazima, несколько подсказок.

Следующая часть кода позволяет выбрать папку для перебора файлов, сохраняя ссылку на папку в виде текста в переменную sFolder:

[vba]
Код
With Application.FileDialog(msoFileDialogFolderPicker)
       If .Show = False Then Exit Sub
       sFolder = .SelectedItems(1)
End With

sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
[/vba]
Следующий кусок позволит перебирать файлы по одному, открывая каждый (где sFiles - текст полного названия файла включая формат). При этом открытый файл становится активным и Вам нужно будет переделать с этим учётом Ваш макрос из сообщения 10 (задать прямые ссылки типа ThisWorkbook.Worksheets("Имя_листа").Cells...):

[vba]
Код
sFiles = Dir(sFolder & "*.xls*")

Do While sFiles <> ""
       Workbooks.Open sFolder & sFiles
           'Какой-нибудь Ваш код
       sFiles = Dir
Loop
[/vba]
Создайте отдельный лист в центральном файле, где в первом столбце будут имена листов, а во втором - имена файлов. Тогда вы сможете, проходя циклом по названиям файлов (переменная sFiles у нас уже есть), найти строку в которой есть название листа. Это название листа присвоить переменной, например sSheet.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Четверг, 28.08.2014, 11:54
 
Ответить
Сообщениеkatrinazima, несколько подсказок.

Следующая часть кода позволяет выбрать папку для перебора файлов, сохраняя ссылку на папку в виде текста в переменную sFolder:

[vba]
Код
With Application.FileDialog(msoFileDialogFolderPicker)
       If .Show = False Then Exit Sub
       sFolder = .SelectedItems(1)
End With

sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
[/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
Дата добавления - 28.08.2014 в 11:53
katrinazima Дата: Четверг, 28.08.2014, 13:23 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Rioran, спасибо! буду пробовать
 
Ответить
СообщениеRioran, спасибо! буду пробовать

Автор - katrinazima
Дата добавления - 28.08.2014 в 13:23
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!