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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2009, 18:15   #1
Sorro
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 17
Вопрос Выбор файлов для импорта.

Добрый день. Совсем недавно начал разрабатывать отчёты в excel 2007. В данный момент передо мною стоит задача создания шаблона отчёта, информацией для которого будут служить данные выгружаемые из "программы А" в виде книг(3-4 файла) с не полностью известной структурой, т.е "шапка" будет точно одинаковая, а вот количество строк в документе заранее не известно. И так вопрос в том, как сделать возможность выбора файлов для импорта с появлением диалога, и с помощью каких функций работать с неизвестным количеством строк.
Можно в общих словах. И вообще если есть какие нибудь советы в общем, или ссылки на полезные ресурсы или хорошие книги - пишите, с удовольствием буду изучать.
Заранее спасибо.
Sorro вне форума Ответить с цитированием
Старый 04.05.2009, 19:31   #2
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Попробуй выбрать данные с помощью запросов.
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 04.05.2009, 22:11   #3
Sorro
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 17
По умолчанию

Цитата:
Сообщение от mchip Посмотреть сообщение
Попробуй выбрать данные с помощью запросов.
Каких запросов?
Вообще хотелось бы сделать что то типа ручного выбора.
Sorro вне форума Ответить с цитированием
Старый 04.05.2009, 23:53   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
с не полностью известной структурой, т.е "шапка" будет точно одинаковая, а вот количество строк в документе заранее не известно.
В случае использования макросов структуру документа можно считать известной - Excel легко определит границы диапазона с данными.

Цитата:
И так вопрос в том, как сделать возможность выбора файлов для импорта с появлением диалога
Все файлы в одной папке?
Достаточно выбрать одну папку, и обрабатывать все файлы из неё, или надо выбирать отдельные файлы?
Или папок для обработки будет несколько?

В любом случае, на форуме множество примеров. Осталось только поискать...

Цитата:
И вообще если есть какие нибудь советы в общем
Советов этих тут полный форум.
Без конкретной постановки задачи посоветовать что-то определённое сложно.

Цитата:
с помощью каких функций работать с неизвестным количеством строк
Зависит от того, чего Вы пытаетесь добиться.
Если устроит решение с использованием макросов, прикрепите к сообщению 3 файла - 2 примера исходных файлов, и один - то, что должно получиться в итоге.
Чем больше будет подробностей - тем быстрее получите готовое решение.
EducatedFool вне форума Ответить с цитированием
Старый 05.05.2009, 12:06   #5
Sorro
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 17
По умолчанию Описание задачи

To EducatedFool:
Спасибо за ответ, вот описание задачи:

Надо разработать аналитический отчёт(Analyst_report.xlsx), он состоит из 5и листов и включает в себя преобразованные данные из 3ёх файлов и их сравнение:
1. period_report.xlsx
2. day_report.xlsx
3. paper_report.xlsx

Анализ данных должен происходить автоматически при указании этих файлов. Первые два файла формируются программой, поэтому для анализа их следует немного преобразовать. Преобразованные файлы для удобства вставляются в соответствующие листы (далее они будут скрыты) аналитического отчёта. 3ий фаил формируется вручную, и он тоже будет добавляться в скрытый лист (в дальнейшем хотелось бы разработать форму для ввода данных). Количество строк в файлах не известно.
С импортом буду разбираться, вот нашёл примеры, с рецептами от вас же: http://programmersforum.ru/showthread.php?t=6555
http://programmersforum.ru/showthread.php?t=29913

Но самое главное хотелось бы сделать автоматическое формирование строк в листе «Несоответствия» аналитического отчёта на основе сравнения данных из скрытых листов( содержащею информацию из файлов period_report.xlsx и paper_report.xlsx). Типа если за такое то число данные из отчётов расходятся более чем на 5% то сформировать строку с указанием данных и разницы.
Подскажите с помощью чего это реализовывать, и если можно, какой нить примерчик. Заранее СПС.
Вложения
Тип файла: rar examples.rar (52.6 Кб, 14 просмотров)
Sorro вне форума Ответить с цитированием
Старый 06.05.2009, 11:15   #6
Sorro
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 17
По умолчанию

Подскажите как правильно написать.
Хочу скопировать из Листа1 выбранной книги определённый диапазон ячеек в активную книгу в Лист2. Так выдаёт Run time error 438 - Object doesn't support this property or method на строке с присвоением значений ячейкам.

Код:
Sub Кнопка2_щелчек()
Dim BazaWb As Workbook
Dim BazaSht As Worksheet
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .Calculation = xlManual
        Set BazaWb = ThisWorkbook
        Set BazaSht = BazaWb.Sheets("Лист2")
        arrFiles = Application.GetOpenFilename("Excel Files (*.xlsx),*.xlsx")
                With .Workbooks.Open _
                     (Filename:=arrFiles, UpdateLinks:=False, ReadOnly:=True)
                    BazaWb.BazaSht.Range("O4:O16").Value = Worksheets("Лист1").Range("A4:A16").Value
                     End With
                     .Close saveChanges:=False
                End With

End Sub
Sorro вне форума Ответить с цитированием
Старый 06.05.2009, 11:33   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

В строке BazaWb.BazaSht.Range("O4:O16").Valu e = Worksheets("Лист1").Range("A4:A16") .Value

перед Worksheets("Лист1") поставьте точку:

Код:
BazaWb.BazaSht.Range("O4:O16").Value = .Worksheets("Лист1").Range("A4:A16").Value
EducatedFool вне форума Ответить с цитированием
Старый 06.05.2009, 11:38   #8
Sorro
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 17
По умолчанию

Понял
Надо так
BazaSht.Range("O4:O16").Value = .Worksheets("Лист1").Range("A4:A16" ).Value

Последний раз редактировалось Sorro; 06.05.2009 в 11:57.
Sorro вне форума Ответить с цитированием
Старый 06.05.2009, 12:16   #9
Sorro
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 17
По умолчанию

В Значение в ячейке сохранено как текст, как с помощью макроса преобразовать его в число? По формуле через Значен..
Sorro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поочередный выбор файлов из Filelistbox He77ga Компоненты Delphi 3 02.05.2009 14:19
Выбор компонента для работы с содержимым текстовых файлов[Delphi] sergey31 Помощь студентам 2 28.08.2008 16:53
Выбор Программатора для МК Ivan_32 Компьютерное железо 1 17.07.2008 19:57
Нужна помощь: выбор файлов исходя из имени файлов Antik163RUS Помощь студентам 4 19.06.2008 21:20
Выбор среды для С++ CrazyJohn Общие вопросы C/C++ 7 18.11.2007 01:46