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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автомат. копирование данных из файла с заданным названием (Макросы/Sub)
Автомат. копирование данных из файла с заданным названием
ArkaIIIa Дата: Понедельник, 22.09.2014, 09:13 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
Добрый день, уважаемые гуру!

Помогите, пожалуйста, решить проблему.

Есть папка в которую выгружаются файлы с именем "DSC_15.09.14", "DSC_16.09.14" и т.д., данные в них по части форм таблиц - однородны.
Хотелось бы иметь файл, в котором бы информация из этих файлов агрегировались.

Т.е. хотелось бы иметь файл с макросом, который делал бы следующее.
1) Смотрел на забитое мной название файла из которого нужно подтянуть данные (путь, где лежат файлы всегда один).
2) Переносил данные из этого файла в следующую пустую строку (ну, т.е. последовательно продлевался без пропуска строк). Данные всегда берутся с листа с названием "DSC_AGGREGATE".
3) Рядом со скопированными данными проставлял имя файла из которого они скопированы.

Пример прикладываю.

П.С. Прошу понять и простить унылую попытку объясить, что конкретно нужно... - мало того, что только из отпуска вернулся и голова плохо соображает, так еще и заболел :-(
П.П.С. Перезалил файлик. 2_2_2 - пример исходника, из которого инфа должна браться. 1_1_1 - агрегированная таблица.
К сообщению приложен файл: 1_1_1.xls (32.0 Kb) · 2_2_2.xls (26.5 Kb)


Сообщение отредактировал ArkaIIIa - Понедельник, 22.09.2014, 09:18
 
Ответить
СообщениеДобрый день, уважаемые гуру!

Помогите, пожалуйста, решить проблему.

Есть папка в которую выгружаются файлы с именем "DSC_15.09.14", "DSC_16.09.14" и т.д., данные в них по части форм таблиц - однородны.
Хотелось бы иметь файл, в котором бы информация из этих файлов агрегировались.

Т.е. хотелось бы иметь файл с макросом, который делал бы следующее.
1) Смотрел на забитое мной название файла из которого нужно подтянуть данные (путь, где лежат файлы всегда один).
2) Переносил данные из этого файла в следующую пустую строку (ну, т.е. последовательно продлевался без пропуска строк). Данные всегда берутся с листа с названием "DSC_AGGREGATE".
3) Рядом со скопированными данными проставлял имя файла из которого они скопированы.

Пример прикладываю.

П.С. Прошу понять и простить унылую попытку объясить, что конкретно нужно... - мало того, что только из отпуска вернулся и голова плохо соображает, так еще и заболел :-(
П.П.С. Перезалил файлик. 2_2_2 - пример исходника, из которого инфа должна браться. 1_1_1 - агрегированная таблица.

Автор - ArkaIIIa
Дата добавления - 22.09.2014 в 09:13
AndreTM Дата: Понедельник, 22.09.2014, 09:26 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Буквально только что задавался подобный вопрос, а если порыться дальше по разделу, то решений - как этого самого... :)
Или сходи к Диме на сайт, там готового кода хватает (если ещё по связанным ссылкам посмотреть).


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Понедельник, 22.09.2014, 09:30
 
Ответить
СообщениеБуквально только что задавался подобный вопрос, а если порыться дальше по разделу, то решений - как этого самого... :)
Или сходи к Диме на сайт, там готового кода хватает (если ещё по связанным ссылкам посмотреть).

Автор - AndreTM
Дата добавления - 22.09.2014 в 09:26
ArkaIIIa Дата: Понедельник, 22.09.2014, 09:30 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
AndreTM
Если бы это касалось формул - я бы именно так и поступил, но с макросами совсем беда. Я смогу адаптировать код под рабочую (полную) версию своего файла при учете, что код написан под мой пример. Но, увы, я ничего не смогу сделать с кодом, написанным для другой, пусть и схожей, задачи.
 
Ответить
СообщениеAndreTM
Если бы это касалось формул - я бы именно так и поступил, но с макросами совсем беда. Я смогу адаптировать код под рабочую (полную) версию своего файла при учете, что код написан под мой пример. Но, увы, я ничего не смогу сделать с кодом, написанным для другой, пусть и схожей, задачи.

Автор - ArkaIIIa
Дата добавления - 22.09.2014 в 09:30
AndreTM Дата: Понедельник, 22.09.2014, 10:26 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Ну, можно попробовать вот так:
Там многое ещё можно прописать по поводу ошибок, оптимизации, ускорения... :)
К сообщению приложен файл: common.xls (40.0 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеНу, можно попробовать вот так:
Там многое ещё можно прописать по поводу ошибок, оптимизации, ускорения... :)

Автор - AndreTM
Дата добавления - 22.09.2014 в 10:26
ArkaIIIa Дата: Понедельник, 22.09.2014, 12:19 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
AndreTM
Буду разбираться)
Большое спасибо за помощь!
 
Ответить
СообщениеAndreTM
Буду разбираться)
Большое спасибо за помощь!

Автор - ArkaIIIa
Дата добавления - 22.09.2014 в 12:19
ArkaIIIa Дата: Понедельник, 22.09.2014, 12:39 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
AndreTM
Эм, в рамках уже заданного вопроса, по этой же теме.
Подскажите, пожалуйста, где указать путь к файлу, название которого указывается в Е1

[vba]
Код
Sub GetData()
      
     cFileName = UCase([e1])
     cSheetName = "DSC_AGGREGATE"
[/vba]

Пусть всегда стандартный "F:\! Отчетность\Daily\Название файла.xls".
А так все работает отлично)
 
Ответить
СообщениеAndreTM
Эм, в рамках уже заданного вопроса, по этой же теме.
Подскажите, пожалуйста, где указать путь к файлу, название которого указывается в Е1

[vba]
Код
Sub GetData()
      
     cFileName = UCase([e1])
     cSheetName = "DSC_AGGREGATE"
[/vba]

Пусть всегда стандартный "F:\! Отчетность\Daily\Название файла.xls".
А так все работает отлично)

Автор - ArkaIIIa
Дата добавления - 22.09.2014 в 12:39
Wasilich Дата: Понедельник, 22.09.2014, 14:13 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Так наверное.
[vba]
Код
cPath = "F:\! Отчетность\Daily"
[/vba]
 
Ответить
СообщениеТак наверное.
[vba]
Код
cPath = "F:\! Отчетность\Daily"
[/vba]

Автор - Wasilich
Дата добавления - 22.09.2014 в 14:13
ArkaIIIa Дата: Понедельник, 22.09.2014, 16:31 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
Так наверное.
cPath = "F:\! Отчетность\Daily"

Увы, так тоже пытается вытащить данные с рабочего стола.
Подскажите, пожалуйста, кто знает, куда и что вставить в код, чтобы имя файла, указанное в е1 искалось не на рабочем столе, а в указанной папке:

F:\! Отчетность\Daily

[vba]
Код
Sub GetData()
      
     cFileName = UCase([e1])
     cSheetName = "DSC_AGGREGATE"
      
     cPath = ThisWorkbook.Path
     If Dir(cPath & "/" & cFileName & ".xls") = "" Then
         MsgBox "Отсутствует файл " & cFileName & ".xls"
         Exit Sub
     End If
      
     nRow = Cells(Rows.Count, 4).End(xlUp).Row
     While nRow > 1
         If UCase(Cells(nRow, 4)) = cFileName Then
             Rows(nRow).Delete
         End If
         nRow = nRow - 1
     Wend
     ActiveSheet.UsedRange
      
     Dim oSour As Range
     Set oDest = Cells(Cells(Rows.Count, 4).End(xlUp).Row + 1, 1)
     Set oWB = Workbooks.Open(cPath & "/" & cFileName & ".xls", , True)
     With oWB.Sheets(cSheetName)
         Set oSour = Intersect(.Columns("A:C"), .UsedRange)
     End With
     Set oSour = oSour.Offset(1).Resize(oSour.Rows.Count - 1, oSour.Columns.Count)
     oSour.Copy oDest
     oDest.Offset(, 3).Resize(oSour.Rows.Count) = cFileName
     oWB.Close False
      
End Sub
[/vba]
 
Ответить
Сообщение
Так наверное.
cPath = "F:\! Отчетность\Daily"

Увы, так тоже пытается вытащить данные с рабочего стола.
Подскажите, пожалуйста, кто знает, куда и что вставить в код, чтобы имя файла, указанное в е1 искалось не на рабочем столе, а в указанной папке:

F:\! Отчетность\Daily

[vba]
Код
Sub GetData()
      
     cFileName = UCase([e1])
     cSheetName = "DSC_AGGREGATE"
      
     cPath = ThisWorkbook.Path
     If Dir(cPath & "/" & cFileName & ".xls") = "" Then
         MsgBox "Отсутствует файл " & cFileName & ".xls"
         Exit Sub
     End If
      
     nRow = Cells(Rows.Count, 4).End(xlUp).Row
     While nRow > 1
         If UCase(Cells(nRow, 4)) = cFileName Then
             Rows(nRow).Delete
         End If
         nRow = nRow - 1
     Wend
     ActiveSheet.UsedRange
      
     Dim oSour As Range
     Set oDest = Cells(Cells(Rows.Count, 4).End(xlUp).Row + 1, 1)
     Set oWB = Workbooks.Open(cPath & "/" & cFileName & ".xls", , True)
     With oWB.Sheets(cSheetName)
         Set oSour = Intersect(.Columns("A:C"), .UsedRange)
     End With
     Set oSour = oSour.Offset(1).Resize(oSour.Rows.Count - 1, oSour.Columns.Count)
     oSour.Copy oDest
     oDest.Offset(, 3).Resize(oSour.Rows.Count) = cFileName
     oWB.Close False
      
End Sub
[/vba]

Автор - ArkaIIIa
Дата добавления - 22.09.2014 в 16:31
The_Prist Дата: Понедельник, 22.09.2014, 16:36 | Сообщение № 9
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

2010
У Вас разделитель неверно указан:
cPath & "/" & cFileName
нужен обратный слеш:
[vba]
Код
cPath = "F:\! Отчетность\Daily"
     If Dir(cPath & "\" & cFileName & ".xls") = "" Then
         MsgBox "Отсутствует файл " & cFileName & ".xls"
         Exit Sub
     End If
[/vba]
Ну и далее по тексту есть еще неверный слеш - сами измените.


Errare humanum est, stultum est in errore perseverare
 
Ответить
СообщениеУ Вас разделитель неверно указан:
cPath & "/" & cFileName
нужен обратный слеш:
[vba]
Код
cPath = "F:\! Отчетность\Daily"
     If Dir(cPath & "\" & cFileName & ".xls") = "" Then
         MsgBox "Отсутствует файл " & cFileName & ".xls"
         Exit Sub
     End If
[/vba]
Ну и далее по тексту есть еще неверный слеш - сами измените.

Автор - The_Prist
Дата добавления - 22.09.2014 в 16:36
ArkaIIIa Дата: Понедельник, 22.09.2014, 16:57 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
The_Prist
Спасибо большое!
 
Ответить
СообщениеThe_Prist
Спасибо большое!

Автор - ArkaIIIa
Дата добавления - 22.09.2014 в 16:57
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автомат. копирование данных из файла с заданным названием (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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