Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Замена листа в книге Excel листом из другой книги / 20 сообщений из 20, страница 1 из 1
29.07.2015, 14:13
    #39018661
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
Здравствуйте. Появилась такая задача. Из БД SQL+Access сформировать отчет по проекту и выгрузить его в готовый шаблон Excel Шаблон этого отчета представляет собой книгу из 4-х листов, одним из которых является график по проекту("Объектный график"). Все графики лежат в отдельной книге, из которой и надо перетащить лист с графиком выбранного проекта в отчет. Все данные из БД я выгружаю запросами и пишу в этот шаблон по клику на кнопку формы. В этой форме из БД вывожу номер графика по выбранному проекту - поле NumSched . Сделал код для копирования графика в отчет:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim report, Schedule As Object""
Set report = CreateObject("Excel.Application")
Set Schedule = CreateObject("Excel.Application")
Set ScheduleWB = report.Workbooks.Open(report.GetOpenFilename(, , "Выберите файл с графиком"))' книга с графиками
Set reportWB = report.Workbooks.Open(report.GetOpenFilename(, , "Выберите шаблон для отчета"))'книга для выгрузки отчета
Set ReportWs = reportWB.Worksheets(1)
Set ReportWsDetail = reportWB.Worksheets(4)
If Me.NumSched <> "" Then 'Вставка графика в отчет
report.DisplayAlerts = False
reportWB.Sheets("Объектный график").Delete 'удаляю предыдущий график из отчета
report.DisplayAlerts = True
ScheduleWB.Sheets(Me.NumSched.Value).Copy before:=reportWB.Sheets(4) 'копирую график в отчет из файла графиков
End If


График мне нужно вставить перед 4-м листом. При выполнении кода старый график из шаблона удаляется, но вот новый не копируется изкниги графиков...что не так делаю? помогите пожалуйста
...
Рейтинг: 0 / 0
29.07.2015, 14:31
    #39018690
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
Код: vbnet
1.
2.
Set report = CreateObject("Excel.Application")
Set Schedule = CreateObject("Excel.Application")



не нужно два объекта, попробуйте работать с одним
...
Рейтинг: 0 / 0
29.07.2015, 14:35
    #39018700
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
хотя... вторая строка там вообще не используется...jediAlexне копируется изкниги графиковошибка какая?
...
Рейтинг: 0 / 0
29.07.2015, 14:41
    #39018710
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
Shocker.Pro, никакого сообщения не вылетает...код отрабатывает...ошибка в том, что лист не копируется из книги в книгу...
...
Рейтинг: 0 / 0
29.07.2015, 14:45
    #39018716
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
ошбся в коде...надо было написать
Код: vbnet
1.
2.
Set ScheduleWB = report.Workbooks.Open(Schedule.GetOpenFilename(, , "Выберите файл с графиком"))' книга с графиками
Set reportWB = report.Workbooks.Open(report.GetOpenFilename(, , "Выберите шаблон для отчета"))'книга для выгрузки отчета


исправил, но результата не изменило... как работать с одним объектом? один - файл отчета, а другой - файл с графиками.. оба могут не постоянно в одном месте лежать и не обязательно их имена постоянные...имя файла с графиками меняется точно в зависимости от периода, на который они составляются....
...
Рейтинг: 0 / 0
29.07.2015, 14:50
    #39018723
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
jediAlexошбся в коде...надо было написатьнет, как раз изначально было правильно, то есть строку
Код: vbnet
1.
Set Schedule = CreateObject("Excel.Application")

нужно просто удалить - она не нужна.
...
Рейтинг: 0 / 0
29.07.2015, 14:50
    #39018726
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
jediAlexShocker.Pro, никакого сообщения не вылетает...код отрабатывает...ошибка в том, что лист не копируется из книги в книгу...то есть и ошибку не выдает и копирования не происходит? странно
У вас там часом нет On Error в процедуре или выше?
...
Рейтинг: 0 / 0
29.07.2015, 15:21
    #39018761
гр к
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
jediAlex, а график у тебя - это Chart на отдельном листе?
...
Рейтинг: 0 / 0
29.07.2015, 15:25
    #39018772
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
Shocker.Pro, пролистал весь код. Да есть On error. Убрал обработку ошибки и при выполнении выскочила ошибка Subsscript out of range
на строке
ScheduleWB.Sheets(Me.NumSched.Value).Copy before:=reportWB.Sheets(4)
...
Рейтинг: 0 / 0
29.07.2015, 15:28
    #39018778
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
график - перечень работ групп по проекту в виде таблицы со сроками начала и окончания,а не график в виде диаграммы...
...
Рейтинг: 0 / 0
29.07.2015, 15:35
    #39018790
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
в отладчике видно, что значение Me.NumSched.Value есть...
...
Рейтинг: 0 / 0
29.07.2015, 15:43
    #39018799
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
а reportWB.Sheets(4) есть?

выполни в отладчике (в Immediate) в момент ошибки:
Код: vbnet
1.
2.
?ScheduleWB.Sheets(Me.NumSched.Value).Name
?reportWB.Sheets(4).Name
...
Рейтинг: 0 / 0
29.07.2015, 15:45
    #39018802
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
jediAlexДа есть On error. Убрал обработку ошибкивидать неверная обработка ошибки, раз не показывает никакой информации о ней и заставляет думать, что ошибки нетjediAlexкод отрабатывает...
...
Рейтинг: 0 / 0
29.07.2015, 15:47
    #39018803
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
Еще есть мысль:
Код: vbnet
1.
ScheduleWB.Sheets(CInt(Me.NumSched.Value))
...
Рейтинг: 0 / 0
29.07.2015, 15:55
    #39018809
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
Shocker.Pro, вот да...лист то удаляю и их 3 остается... переправил
Код: vbnet
1.
ScheduleWB.Sheets(Me.NumSched.Value).Copy before:=reportWB.Sheets(4) 

на
Код: vbnet
1.
ScheduleWB.Sheets(Me.NumSched.Value).Copy before:=reportWB.Sheets(3) 
...
Рейтинг: 0 / 0
29.07.2015, 15:56
    #39018811
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
Код: vbnet
1.
ScheduleWB.Sheets(CInt(Me.NumSched.Value)).Copy before:=reportWB.Sheets(3)

ругнулось :
Код: vbnet
1.
type mismatch
...
Рейтинг: 0 / 0
29.07.2015, 15:58
    #39018815
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
jediAlexShocker.Pro, вот да...лист то удаляю и их 3 остается... переправилну так что, помогло? Если помогло, зачем тогда пробы с CInt?
...
Рейтинг: 0 / 0
29.07.2015, 16:00
    #39018819
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
Shocker нет не помогло...лист не копируется все равно
...
Рейтинг: 0 / 0
29.07.2015, 16:01
    #39018822
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
Так ошибка какая?


Shocker.Proа reportWB.Sheets(4) есть?

выполни в отладчике (в Immediate) в момент ошибки:
Код: vbnet
1.
2.
?ScheduleWB.Sheets(Me.NumSched.Value).Name
?reportWB.Sheets(4).Name


а с этим что? (с учетом 4 => 3)
...
Рейтинг: 0 / 0
29.07.2015, 16:36
    #39018865
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена листа в книге Excel листом из другой книги
все работает, всем спасибо.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Замена листа в книге Excel листом из другой книги / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]