Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 09.09.2015
Сообщений: 1
1

Объединение нескольких файлов в одну таблицу (макрос не работает)

12.09.2015, 09:41. Показов 3464. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нашел макрос
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Sub LoadDataFromWorkbooks()
 
    On Error Resume Next: Err.Clear
    Dim AskForFolder As Boolean: AskForFolder = Not shd.OLEObjects("SaveFolderPath").Object.Value
 
    ' запрашиваем пути к папкам с файлами
    msg1$ = "Выберите папку с файлами для обработки"    '"Select a folder with files to import from"
    InvoiceFolder$ = GetFolder(1, AskForFolder, msg1$)
    If InvoiceFolder$ = "" Then MsgBox "Не задана папка с файлами для обработки", vbCritical, "Обработка заявок невозможна": Exit Sub
 
    Dim coll As Collection
    ' загружаем список файлов по маске имени файла
    Set coll = FilenamesCollection(InvoiceFolder$, "*.xls*", 1)
 
    If coll.Count = 0 Then
        MsgBox "Не найдено ни одной заявки для обработки в папке" & vbNewLine & InvoiceFolder$, _
               vbExclamation, "Нет необработанных заявок"
        Exit Sub
    End If
 
    Dim pi As New ProgressIndicator: pi.Show "Обработка заявок", , 2
    pi.StartNewAction , , , , , coll.Count    ' отображаем прогресс-бар
 
    Dim WB As Workbook, sh As Worksheet, ra As Range
    Application.ScreenUpdating = False  ' отключаем обновление экрана (чтобы процесс открытия файлов не был виден)
 
    ' перебираем все найденные в папке файлы
    For Each Filename In coll
 
        ' обновляем информацию на прогресс-баре
        pi.SubAction "Обрабатывается файл $index из $count", "Файл: " & Dir(Filename), "$time"
        pi.Log "Файл: " & Dir(Filename)
 
        ' открываем очередной файл в режиме «только чтение»
        Set WB = Nothing: Set WB = Workbooks.Open(Filename, False, True)
 
        If WB Is Nothing Then    ' не удалось открыть файл
            pi.Log vbTab & "ОШИБКА при загрузке файла. Файл не обработан."
 
        Else    ' файл успешно открыт
            Set sh = WB.Worksheets(1)    ' будем брать данные с первого листа
            ' берем диапазон ячеек с ячейки A2 до последней заполненной в столбце A
            Set ra = sh.Range(sh.Range("a2"), sh.Range("a" & sh.Rows.Count).End(xlUp)).Resize(, 10)
 
            ' ==== переносим данные в наш файл (shd - кодовое имя листа, куда помещаем данные)
            shd.Range("a" & shd.Rows.Count).End(xlUp).Offset(1).Resize(ra.Rows.Count, ra.Columns.Count).Value = ra.Value
            ' ==== конец обработки данных из очередного файла
 
            WB.Close False: DoEvents    ' закрываем обработанный файл без сохранения изменений
            pi.Log vbTab & "Файл успешно обработан."
 
        End If
    Next
 
    ' закрываем прогресс-бар, включаем обновление экрана
    pi.Hide: DoEvents: Application.ScreenUpdating = True
    MsgBox "Обработка заявок завершена", vbInformation
End Sub
 
Sub ClearTable()
    On Error Resume Next: shd.UsedRange.Offset(2).ClearContents
End Sub
Он в принципе решает мою задачу, но не захватывает последний столбец.
Помогите, как его переделать?
В приложении 2 базы, для объединения и файл пример с макросом
Вложения
Тип файла: xlsx 1Гузова База.xlsx (12.3 Кб, 25 просмотров)
Тип файла: xlsx 1Куликова База.xlsx (16.5 Кб, 23 просмотров)
Тип файла: rar результаты.rar (44.6 Кб, 34 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2015, 09:41
Ответы с готовыми решениями:

EF CodeFirst Объединение нескольких классов в одну таблицу
Народ подскажите, как сделать. Надо сделать одну таблицу с кучей полей. Чтобы было удобно я решил...

Записать данных из нескольких файлов Excel в одну таблицу
Доброго времени суток, форумчане! Возник вопрос с занесением данных из нескольких файлов Excel в...

Объединение нескольких матриц в одну
Здравствуйте. Имеется 4096 матриц порядка 8х8. Необходимо объединить их в одну квадратную матрицу...

Объединение нескольких таблиц в одну
Доброго времени суток Уважаемые друзья нужна Ваша помощь Задачка такая Есть несколько...

1
416 / 263 / 83
Регистрация: 27.10.2012
Сообщений: 861
12.09.2015, 16:54 2
Цитата Сообщение от rusbearcub Посмотреть сообщение
Resize(, 10)
Файлы не смотрел, а в макросе замените 10 на нужное вам кол-во колонок.
0
12.09.2015, 16:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2015, 16:54
Помогаю со студенческими работами здесь

Объединение нескольких таблиц в одну
Добрый день! Excel'ем приходится пользоваться нечасто, поэтому прошу не пинать :) Суть...

Объединение нескольких строк в одну
Добрый день, есть БД нужно вывести N строк ( число строк введенное на форме), с объединением строк...

Объединение нескольких колонок в одну
Люди нужна ваша помощь). В общем есть таблица порт в ней колонка с id шниками из таблицы...

Объединение нескольких строк в одну
Привет всем! У меня к вам очередной вопрос! Значит по теме у меня есть строка STRING:='Привет';...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru