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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2010, 11:15   #1
pla
 
Регистрация: 12.11.2010
Сообщений: 8
Сообщение Ошибка пр передаче данных из Access в Excel

Здравствуйте! Прошу помощи: по кнопке в форме в Access передаю данные в Excel для создания отчета - две таблицы для названий столбцов и одну для самого отчета. Отчет формирую с помощью шаблона. Рисую рамки, поварачиваю на 90 градусов названия столбцов, удаляю, если нужно, столбцы, печатаю, нажимаю выход и возвращаюсь опять в форму, все замечательно, но только один раз. При повторном нажатии кнопки появляется сообщение "Method 'Cells' of object '_Global' failed" или
"object variable or With block variable not set" , в чем дело?
pla вне форума Ответить с цитированием
Старый 12.11.2010, 19:10   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте pla.
Вы выложили сообщение "..Прошу помощи: по кнопке...При повторном нажатии...?", и хотите что бы участники форума догадались почему "..появляется сообщение..".
Может быть стоило подумать о выкладывании здесь на странице форума архива с файлом БД, чтобы дать возможность перед ответом проанализировать конструкцию.
Это ведь форум обсуждающий вопросы по MS Access, а не по экстрасенсорике.

Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 16.11.2010, 10:25   #3
pla
 
Регистрация: 12.11.2010
Сообщений: 8
Сообщение

Здравствуйте, Эвгений! Спасибо, что откликнулись, я впервые обратилась за помощью, так что простите, что не конкретизировала вопрос. Вот на этом макросе, сформированном в Excel возникает сообщение "objecj variable..."

For k = 12 To intRow
For l = 1 To 74
objWS.Range(objWS.Cells(k, l), objWS.Cells(k, l)).Select
Selection.Borders(xlDiagonalDown).L ineStyle = xlNone
Selection.Borders(xlDiagonalUp).Lin eStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Font
.Name = "Arial Cyr"
.FontStyle = "обычный"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Next
Next

Людмила
pla вне форума Ответить с цитированием
Старый 16.11.2010, 19:42   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Людмила.
для выполнения подобного кода в Access к проекту VBA должна быть подключена библиотека Microsoft Excel.
переменной objWS должен быть присвоен объект лист открытой книги, ведь только на листе можно обращаться к Range (диапазону).
подобной конструкцией можно создавать документ и задавать форматирование диапазону листа
Код:
Dim oRange As Object, XL As Object, objWS As Object
Set XL = CreateObject("Excel.Application")
Set XL = XL.Workbooks.Add
Set objWS = XL.Worksheets(1)
'...
'
Set oRange = objWS.Range(objWS.Cells(12, 1), objWS.Cells(intRow, 74))
With oRange
    .Borders(xlDiagonalDown).L ineStyle = xlNone
    .Borders(xlDiagonalUp).Lin eStyle = xlNone
    With .Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With .Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With .Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With .Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With .Font
        .Name = "Arial Cyr"
        .FontStyle = "îáû÷íûé"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
End With
рекомендация от Microsoft : задавать одинаковое форматирование, лучше не перебором ячеек а целиком всему диапазону.

Примерно так.
Евгений.

P.S.выкладываемый код для удобочитаемости заключайте в теги [соde]...[/соde]

Последний раз редактировалось Teslenko_EA; 16.11.2010 в 19:44.
Teslenko_EA вне форума Ответить с цитированием
Старый 17.11.2010, 10:31   #5
pla
 
Регистрация: 12.11.2010
Сообщений: 8
По умолчанию

Здравствуйте, Евгений!
Огромное Вам спасибо, все получилось.
pla вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт-экспорт данных Excel-Access, и из Access-Excel Людвиг Microsoft Office Access 3 27.10.2011 14:38
Вопросы по передаче данных. Синхронный, асинхронный режимы. Коэффициент сжатия. Zyek Помощь студентам 1 22.10.2010 15:47
Передача данных из Access в Excel Syn-McJ Microsoft Office Access 1 08.10.2010 10:30
ошибка при передаче ссылки на массив в визуал 2008 LOST94 Общие вопросы C/C++ 7 29.06.2010 22:23
импорт данных из access в excel. romale_80 Microsoft Office Access 8 25.03.2010 01:26