Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 14.11.2008, 15:09   #1
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию избавиться от лишней манипуляции

Люди, у меня такая проблема. Мне клиент приносит файлы ексель. Я , для дальнейшей обработки с начало должен: открыть файл, скопировать данные и перенести значения в новую книгу. Далее я открываю следующий файл, копирую и вставляю значения в ту новую книгу, но уже ниже, раннее внесенных значений. И так и далее, иногда десятки раз. В итоге в моей книге получается долгожданная вертикальная портянка с данными. Вопрос: Существуют ли какие примочки или макросы, что бы уйти от этой рутины? А то по обедать иногда хочеться, а тут...
Думайте глобально - действуйте локально!
Iskin вне форума
Старый 14.11.2008, 16:53   #2
snakezx
Пользователь
 
Регистрация: 16.10.2008
Сообщений: 15
По умолчанию

А кол-во строк в подкачиваемых таблицах всё время разное или всё время одинаковое, если одинаковое, то тут всё просто, с помощью знака = можно справиться, а вогт если раз6ное, то помозговать надо бы!
snakezx вне форума
Старый 15.11.2008, 21:08   #3
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

[QUOTE=Iskin;157597]Существуют ли какие примочки или макросы, что бы уйти от этой рутины?QUOTE]
У меня были такие-же заморочки.
Я их решил, вот файл с макросом для экспорта данных выкладываю.
Немного корявенько но меня устраивает.
Просьба пользоваться "как есть" (там завязка на название, по этому сам файл не стоит переименовывать, листы добавлять можно. вставляет на активный)
Это был большой файл, я из него всё лишнее убрал. (ну может и не всё)
Там возможность импорта по названию файла, по содержимому файла.
Для выбора каталога щёлкните по любому файлу в выбраном каталоге.
(подкаталоги просматривает, вставляет только выбранные из сформированного списка)
Последняя строка определяется по столбцу "В"
Сервис => Макросы => Импорт (ну а там я думаю разберётесь)
Зы : если что пароль на проекте 1
Вложения
Тип файла: zip Заказ на воздуховоды.zip (33.7 Кб, 48 просмотров)

Последний раз редактировалось КаМММ; 15.11.2008 в 21:19.
КаМММ вне форума
Старый 17.11.2008, 09:06   #4
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Цитата:
Сообщение от snakezx Посмотреть сообщение
А кол-во строк в подкачиваемых таблицах всё время разное или всё время одинаковое, если одинаковое, то тут всё просто, с помощью знака = можно справиться, а вогт если раз6ное, то помозговать надо бы!
К сожелению количество строк всегда разное. И названия фалов тоже.
Думайте глобально - действуйте локально!
Iskin вне форума
Старый 17.11.2008, 09:12   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
К сожелению количество строк всегда разное. И названия фалов тоже.
Прикрепите к сообщению исходный файл и файлы, из которых необходимо копировать данные.

Подробно опишите, из каких файлов (с какими именами) надо копировать данные, как распознать (по каким признакам) диапазоны ячеек для копирования, ну и все прочие нюансы.
EducatedFool вне форума
Старый 17.11.2008, 09:17   #6
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Для выбора каталога щёлкните по любому файлу в выбраном каталоге.
(подкаталоги просматривает, вставляет только выбранные из сформированного списка)
Последняя строка определяется по столбцу "В"
Сервис => Макросы => Импорт (ну а там я думаю разберётесь)
Зы : если что пароль на проекте 1[/QUOTE]
Когда пытаюсь выбрать каталог Ошибку выдает...
Думайте глобально - действуйте локально!
Iskin вне форума
Старый 17.11.2008, 09:31   #7
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Есть файлы. имена файлов начинаются на PackingList, а хвосты разные.
Например: PackingList_11217_ARKU8313050, PackingList_12837_ARKU8401417 и т.д.
Мне надо, в новой книге на листе 1 перенести все значения с листа 1 выше перечислнных файлов. При этом данные должны располагаться друг под другом.
Пример в вложенном файле.
Вложения
Тип файла: rar пример.rar (13.0 Кб, 24 просмотров)
Думайте глобально - действуйте локально!

Последний раз редактировалось Iskin; 17.11.2008 в 09:39.
Iskin вне форума
Старый 17.11.2008, 12:16   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

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

Код:
Option Compare Text

Function CurrentFolderXLFileNames() As Collection
    Path = GetPath: Dim coll As New Collection: res = Dir(Path)
    While res <> ""
               If LCase(res) Like "*packinglist*.xl*" And res <> ThisWorkbook.Name Then coll.Add Path & res
        res = Dir
    Wend
    Set CurrentFolderXLFileNames = coll
End Function

Function GetPath() As String
    GetPath = ThisWorkbook.Path: PS = Application.PathSeparator
    If Not Right$(GetPath, 1) = PS Then GetPath = GetPath & PS
End Function


Sub Main()
    On Error Resume Next
    Application.ScreenUpdating = False
    Dim sh As Worksheet: Set sh = ThisWorkbook.Worksheets(1)
    With sh
        .Cells.ClearContents ' очиска всех ячеек листа от прежнего содержимого
        Dim tsh As Worksheet, tWB As Workbook
        For Each file In CurrentFolderXLFileNames
            Set tWB = Workbooks.Open(file, , True)
            If Not tWB Is Nothing Then    ' файл открылся
                Set tsh = tWB.Worksheets(1)    '  здесь можно будет написать и название листа
                If Not tsh Is Nothing Then    ' лист присутствует
                    tsh.UsedRange.Copy .UsedRange.Cells(.UsedRange.Cells.Count).Offset(1).EntireRow.Cells(1)
                End If
                tWB.Close False
            End If
        Next
    End With
    Application.ScreenUpdating = True
End Sub
Запустите макрос Main

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

Последний раз редактировалось EducatedFool; 17.11.2008 в 12:21.
EducatedFool вне форума
Старый 18.11.2008, 09:01   #9
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

Цитата:
Когда пытаюсь выбрать каталог Ошибку выдает...
Странно у меня Каталог выбирает.
Только что проверил запустив файлы из выложенного архива.
Как ни странно названия ваших файлов не видит. (мои файлы с названиями типа 966 от 01-окт-08 Термо-С Дерюшева Г. А..xls видит нормально)
В чём причина мне непонятно.
А данные не вставит по тому что у вас столбец "В" пустой.
Надеюсь то что предложил EducatedFool Вам подошло.
А если кто-нибудь знает почему у моего варианта не выбираются файлы буду признателен за совет...
КаМММ вне форума
Старый 18.11.2008, 11:33   #10
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Создайте в книге, куда надо собирать все данные, модуль, и поместите в него следующий код:
Поскольку Вы не указали, как определять границы диапазонов ячеек для копирования, макрос производит копирование всей используемой области первого листа каждого из файлов.
Спасибо огромное! Все отрабатывает именно так как надо (копирование всей используемой области первого листа каждого из файлов), но есть небольшие пожелания.
1. Я так понял макрос отрабатывает в том случае если файлы "packinglist*" находятся в том же корневом каталоге где и сам "общий файл". Это отлично, но было бы не плохо если в случае не нахождения "packinglist*", я бы мог сам указать путь к файлу (потому как файлы находятся в нескольких папках).
2. Желательно что бы на общий лист копировалось не сам лист (с линиями, форматами, с объединениями ячеек), а только значения. Потому как в файлах "packinglist*" есть связи на другие файлы и при импортировании, приходиться для каждого файла разрывать связи.
Думайте глобально - действуйте локально!

Последний раз редактировалось Iskin; 18.11.2008 в 13:44.
Iskin вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Манипуляции с датой в запросе Arkuz БД в Delphi 8 11.11.2008 23:23
массив сохранение информации и манипуляции oblom Общие вопросы C/C++ 19 04.02.2008 02:28
как избавиться от 2.26188E+19?? banker Microsoft Office Excel 11 12.12.2007 09:35
Манипуляции с датой и временем. Tatyana БД в Delphi 16 29.06.2007 19:19
как избавиться от закладки ЧИЖ Общие вопросы Delphi 3 24.06.2007 00:05