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

Вход

Регистрация

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

 

= Мир MS Excel/Вставка полей (столбцов) в нескольких файлах - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка полей (столбцов) в нескольких файлах (Макросы/Sub)
Вставка полей (столбцов) в нескольких файлах
Isa Дата: Среда, 13.04.2016, 09:32 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Доброе время!
Помогите, пожалуйста, в решении такой задачи.
Файл (Obrazec.xls), содержит только заголовки полей (Лист1). Полей может быть от 25 до 30.
В той же папке лежат файлы, в которых часть полей из файла Obrazec.xls может отсутствовать (исходные данные - на листах Old). Количество файлов может быть от 60 до 100, в примере - это File_1, File_2,File_3 и File_4.
Как в эти файлы вставить отсутстующие поля из файла Obrazec, чтобы получить результат, приведенный в файлах на листах New?
Такое преобразование файлов нужно перед сборкой данных в один файл.
К сообщению приложен файл: Insert_Fields.zip(19Kb)
 
Ответить
СообщениеДоброе время!
Помогите, пожалуйста, в решении такой задачи.
Файл (Obrazec.xls), содержит только заголовки полей (Лист1). Полей может быть от 25 до 30.
В той же папке лежат файлы, в которых часть полей из файла Obrazec.xls может отсутствовать (исходные данные - на листах Old). Количество файлов может быть от 60 до 100, в примере - это File_1, File_2,File_3 и File_4.
Как в эти файлы вставить отсутстующие поля из файла Obrazec, чтобы получить результат, приведенный в файлах на листах New?
Такое преобразование файлов нужно перед сборкой данных в один файл.

Автор - Isa
Дата добавления - 13.04.2016 в 09:32
leskris Дата: Среда, 13.04.2016, 09:39 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
А названия столбцов по порядку идет?? как в образце? если нет, как вообще понять какое имя нужно присвоить столбцу?
 
Ответить
СообщениеА названия столбцов по порядку идет?? как в образце? если нет, как вообще понять какое имя нужно присвоить столбцу?

Автор - leskris
Дата добавления - 13.04.2016 в 09:39
Isa Дата: Среда, 13.04.2016, 09:47 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
leskris, Названия полей записаны в файле Obrazec и идут именно в таком порядке.
И в файлах данных нет полей, которых не было бы в Obrazec. И поля в файлах упорядочены.
Т.е., например Поле 2 всегда левее, например, Поля 6.
 
Ответить
Сообщениеleskris, Названия полей записаны в файле Obrazec и идут именно в таком порядке.
И в файлах данных нет полей, которых не было бы в Obrazec. И поля в файлах упорядочены.
Т.е., например Поле 2 всегда левее, например, Поля 6.

Автор - Isa
Дата добавления - 13.04.2016 в 09:47
Manyasha Дата: Среда, 13.04.2016, 12:46 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 1586
Репутация: 662 ±
Замечаний: 0% ±

Excel 2007, 2010
Isa, посмотрите такой вариант:
[vba]
Код
Sub addColumns()
    Application.ScreenUpdating = False
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Выберите файлы"
        .InitialFileName = ThisWorkbook.Path
        .Filters.Clear
        .Filters.Add "Excel", "*.xls;*.xlsx;*.xlsm", 1: .AllowMultiSelect = True
        If .Show = False Then Exit Sub
        Set mainSh = ThisWorkbook.Sheets(1)
        For i = 1 To .SelectedItems.Count
            Set wb = Workbooks.Open(.SelectedItems(i))
            With wb.Sheets(1)
                j = 1
                Do While mainSh.Cells(1, j) <> ""
                    If .Cells(1, j) <> mainSh.Cells(1, j) Then
                        Columns(j).Insert xlToRight
                        .Cells(1, j) = mainSh.Cells(1, j)
                    End If
                    j = j + 1
                Loop
            End With
            wb.Close True
        Next i
    End With
End Sub
[/vba]
К сообщению приложен файл: Obrazec-1.xls(35Kb)


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеIsa, посмотрите такой вариант:
[vba]
Код
Sub addColumns()
    Application.ScreenUpdating = False
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Выберите файлы"
        .InitialFileName = ThisWorkbook.Path
        .Filters.Clear
        .Filters.Add "Excel", "*.xls;*.xlsx;*.xlsm", 1: .AllowMultiSelect = True
        If .Show = False Then Exit Sub
        Set mainSh = ThisWorkbook.Sheets(1)
        For i = 1 To .SelectedItems.Count
            Set wb = Workbooks.Open(.SelectedItems(i))
            With wb.Sheets(1)
                j = 1
                Do While mainSh.Cells(1, j) <> ""
                    If .Cells(1, j) <> mainSh.Cells(1, j) Then
                        Columns(j).Insert xlToRight
                        .Cells(1, j) = mainSh.Cells(1, j)
                    End If
                    j = j + 1
                Loop
            End With
            wb.Close True
        Next i
    End With
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 13.04.2016 в 12:46
Isa Дата: Среда, 13.04.2016, 13:24 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Manyasha, проверил! Всё проработало "на ура". hands
Большое спасибо!
 
Ответить
СообщениеManyasha, проверил! Всё проработало "на ура". hands
Большое спасибо!

Автор - Isa
Дата добавления - 13.04.2016 в 13:24
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка полей (столбцов) в нескольких файлах (Макросы/Sub)
Страница 1 из 11
Поиск:

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