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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2009, 16:17   #1
Deni55
Пользователь
 
Регистрация: 10.04.2009
Сообщений: 64
Вопрос Создание отчета

Есть пробленма с отчетом.

Нужно чтобы формировался отчет по статьям (к примеру в книге Питание 340 занесена информация по источникам финансирования ФОМС, Бюджет,ПД закупаемая по средствам котировок, Аукциона, торгов и до 100 тыс) Необходимо чтобы вся информация имеющаяся в этой книге переносилась в книгу отчет в соответствующую статью! Аналогично по всем книгам! желательно, чтобы переброс информации происходил без открытия всех документов. (Если возможно)

данные значения каторых нужно переносить залил желтым цветом

Файлы находятся в одной папке!

Помогите кто может!!!

Заранее благодарен!
Вложения
Тип файла: rar Отчет.rar (550.2 Кб, 21 просмотров)
Deni55 вне форума Ответить с цитированием
Старый 02.06.2009, 20:26   #2
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Deni55, самый простой способ связать ячейки.
Вложения
Тип файла: rar Отчет.rar (542.5 Кб, 20 просмотров)
pivas вне форума Ответить с цитированием
Старый 03.06.2009, 09:49   #3
Deni55
Пользователь
 
Регистрация: 10.04.2009
Сообщений: 64
По умолчанию

А есть другой способ?? С привязками у меня иногда случаются проблемы, при их наличии, обновление не происходит! Я так уже пробовал! При переносе на менее слабый комп привязки иногда отказываются работать!
Deni55 вне форума Ответить с цитированием
Старый 10.06.2009, 00:07   #4
Deni55
Пользователь
 
Регистрация: 10.04.2009
Сообщений: 64
По умолчанию

Помогите! Вопрос все еще актуален!!
Проблема в следйющем: 1) Ссылки в отчете плохо рабтают (точнее работают, но не на всех машинах. В чем причина не знаю! Настроены все машины одинаково! Только отличаются по мощьности!)
2) В файлах медикоменты 223,питание 340... и др. плохо работают формулы! Это можно увидеть на примере медикоменты223 обновление результата не всегда проходят нормально! Ингда происходит зависание итоговых сумм по ФОМС, БЮДЖЕТ, ПД.
3) есть ли другой способ расчета по ФОМС, ПД и Бюджету??
утром выложу файл
Deni55 вне форума Ответить с цитированием
Старый 10.06.2009, 00:19   #5
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Если приложишь более подробную задачу (что, откуда, куда) будет замечательно.
pivas вне форума Ответить с цитированием
Старый 10.06.2009, 07:53   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Во-первых, Вы применили макрос, который я делал для одного листа, распространив его на все листы всех книг путем простого копирования. Это очень не рационально. Т.к. на всех листах выполняются одни и те же действия, то это уже событие книги. Во вложении оптимизирована структура всех книг.
Во-вторых, мне не понятно, что нужно вставлять в столбцы "G:I" файла "Отчет.xls".
В-третьих, не понятно, почему у Вас не корректно работают связи с ячейками другой книги.
Посмотрите альтернативный вариант получения данных из неоткрытой рабочей книги без использования связей с помощью макроса XLM.
Данные обновляются при открытии книги. Если какие-либо файлы отсутствуют, то данные из этих файлов обновлены не будут. Никакого сообщения при этом не выводится (а нужно?).
Условия:
1. Все файлы должны находиться в одной папке.
2. Имена файлов и листов переименовывать нельзя. (Вообще-то можно, но т.к. имена файлов и листов определяются по значению ячеек файла "Отчет.xls", то необходимо будет внести соответствующие изменения в этих ячейках.

P.S. Еще раз обратите внимание на построение VBA-проекта файлов-источников.
Вложения
Тип файла: rar Отчет_2.rar (551.4 Кб, 32 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 10.06.2009, 11:30   #7
Deni55
Пользователь
 
Регистрация: 10.04.2009
Сообщений: 64
По умолчанию

Файл «ОТЧЕТ» То что нужно! Спасибо!!! Вот только не могу понять как он определяет нужный файл???!
в столбцы "G:I" файла "Отчет.xls". Туда оператор будет вводить суммы руками, так что вставлять туда ничего не нудно!

А вот сообщение об отсутствии файла желательно!

Файлы медикаменты, питание и хоз. товары по статьям 340,223 и 226 вроде считают правильно, вот только не знаю будет ли подтормаживать этот расчет на менее слабой машине, как это было для отдельного листа.

Выскакивает ошибка :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.Run "Main", Target.Row - Cells(Target.Row, 1), Sh
End Sub

Когда пытаюсь добавить формулу! Формула для даты (Т.е. в столбец J2 прописываем дату 01.01.09. В этой ячейке устанавливается 1-е число. В ячейке J1 устанавливается значение Январь, ячейка К2 =J1+1, тем самым я добиваюсь автоматической смены даты. При достижении 31 января, автоматически будет установлено 1 февраля.) Это нужно, если таблица заполняется не с января, а с июня. Причем дата во всех файлах должна быть одинаковой!
Deni55 вне форума Ответить с цитированием
Старый 10.06.2009, 12:43   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1. В каждом файле-источнике в модуле "Эта книга" замените код на :
Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Intersect(Target, [J4:GQ1026]) Is Nothing Then
        If Target.Cells.Count = 1 Then
            Application.Run "Main", Target.Row - Cells(Target.Row, 1), Sh
        Else: MsgBox "Ввод данных допускается только по 1 ячейке!"
        End If
    End If
End Sub
Это позволит с ячейками вне диапазона "J4:GQ1026" делать все, что угодно.

2. В файле "Отчет.xls" в макросе "Main" найдите фрагмент:
Код:
If Dir(p & f) <> "" Then
    For j = 4 To 6
        a = Cells(1, (j - 3) * 2 + 202).Address
        Cells(i, j) = GetValue(p, f, s, a)
    Next
End If
и удалите (закомментируйте) первую и последнюю строки этого фрагмента.
В результате, при отсутствии текущего обрабатываемого файла будет выведено не сообщение об его отсутствии, а окно с предложением указать путь к этому файлу. При нажатии кнопки "Отмена", обновление данных произведено не будет.

3. Имя файла, листа, и адрес ячейки в макросе "Main" определяются так:
Переменная k задается внешним циклом For k = 2 To 74 Step 36, т.е. принимает 3 значения: 2, 38 и 74, т.е. номера строк. Переменная i задается во внутреннем цикле For i = k + 4 To k + 15. Так, при k=2, перебираются строки с 6 по 17, при k=38 - c 42 по 53 и т.д.
Имя текущего файла определяется как
Код:
f = Cells(i, "B").MergeArea.Cells(1, 1) & Cells(k, "C") & ".xls"
Так, например, при k=2, i=8, значение Cells(i, "B").MergeArea.Cells(1, 1) - это значение левой верхней ячейки объединенного диапазона, в который попадает ячейка Cells(i, "B"), т.е. "Питание". Сцепляем это значение со значением ячейки Cells(k, "C"), т.е. "340" и сцепляем с ".xls". Получаем "Питание340.xls", т.е. требуемое имя файла. Проследите по циклу, как изменяются сцепляемые значения.
Аналогично получаем имя текущего листа:
Код:
s = Cells(i, "B").MergeArea.Cells(1, 1) & " " & Cells(k, "C") & " " & Cells(i, "C")
. Т.е. сцепляем "Питание", пробел, "340", пробел и "Торги" (это при i=8). Получаем "Питание 340 Торги". И т.д.
Адрес ячейки текущего файла, из которой требуется получить значение получаем так:
Код:
a = Cells(1, (j - 3) * 2 + 202).Address
Где j - номер столбца (цикл от 4 до 6). Тогда, при j=4, получаем Cells(1, 204), т.е. ячейку "GV1", при j=5, получаем Cells(1, 206), т.е. ячейку "GX1" и при j=6, получаем Cells(1, 208), т.е. ячейку "GZ1".
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 10.06.2009 в 12:46.
SAS888 вне форума Ответить с цитированием
Старый 10.06.2009, 13:34   #9
Deni55
Пользователь
 
Регистрация: 10.04.2009
Сообщений: 64
По умолчанию

Огромное спасибо! Как раз то, что нужно!
Deni55 вне форума Ответить с цитированием
Старый 11.06.2009, 13:01   #10
Deni55
Пользователь
 
Регистрация: 10.04.2009
Сообщений: 64
По умолчанию

Извеняюсь за идиотизм! Меня что-то клинит, Наверно так действует жара.

А можно сделать, так чтобы файл отчет находился в папке Договори и брал результаты из файлов находящихся в папках 310, 340,223 и 226.? Файлов много! и если они будут находиться в одной папке можно будет запутаться пытаясь найти нужный файл.

Если это невозможно! Тогда помогите с вариантом когда все файлы в одной папке!

Прикрепленный файл отличается от прошлых! Сам пытался разобраться, но что-то не получается!

Помогите пожалуста! очень нужно!!
Deni55 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание отчета в delphi Pang БД в Delphi 7 10.01.2012 16:35
Создание отчета в C++Builder Метрачка Помощь студентам 0 09.05.2009 14:21
Создание отчета! Deni55 Microsoft Office Excel 10 16.04.2009 14:04
Создание отчета в Delphi 7 Надежда609 Помощь студентам 4 19.02.2009 20:43
Создание отчета!!! Viento Microsoft Office Excel 12 26.01.2009 09:26