Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Jane
Зарегистрирован: 19.09.2005 Сообщения: 4
|
Добавлено: Пн Сен 19 2005 18:49 Заголовок сообщения: Access+ Excel+MSSQLServer, вопрос |
|
|
Есть приложение Access, бза хранится на SQLServer'е.
Связаны через ADO и ini-файл. Запросы к серверу пишутся в коде
Access через строковую перемен.
Как:
1.Взятый с сервера набо данных(recordset) сохранить на компе
пользователя в Excelе?
2. В Excel программно создать графики на основе выборочных данных?
Помогите, пожалуйста, оч надо! |
|
Вернуться к началу |
|
|
Dimasm
Зарегистрирован: 25.04.2005 Сообщения: 454
|
Добавлено: Пн Сен 19 2005 19:34 Заголовок сообщения: |
|
|
Подключение к Excel через OLE.
Создаёшь шаблон документа, в котором построены все графики, и есть места для данных. Потом прогой делаешь запрос, подключаешься к Excel через OLE и переносишь данные в заранее известные места.
Если данные могут очень отличаться, то есть нельзя создать универсальный шаблон, то придётся и графики создавать средствами
автоматизации OLE - гараздо сложнее.
А в чём пишите? на VB в Acces? |
|
Вернуться к началу |
|
|
Jane
Зарегистрирован: 19.09.2005 Сообщения: 4
|
Добавлено: Пн Сен 19 2005 19:49 Заголовок сообщения: |
|
|
Dimasm, спасибо что ответил.
Да, пишу на vb в Accessе.
Напиши, плиз, подробнее о подключении через OLE или ссылку,а то я в VB новичок.
Знаешь как программно вызвать в Excel пункты меню? |
|
Вернуться к началу |
|
|
Dimasm
Зарегистрирован: 25.04.2005 Сообщения: 454
|
Добавлено: Пн Сен 19 2005 20:15 Заголовок сообщения: |
|
|
Могу только примерно описать процесс. я на С++ пишу.
создаёшь OLE объект
Dim myExcel As Variant
говоришь, что это Excel
myExcel = CreateOLEObject("Exel")
открываешь свой шаблон
myExcel.OpenFile ("test.xls")
тут начинается твой цикл по полученным данным на VB
while (например)....
для доступа к ячейкам
myExcel.ActiveWorkbook.Sheets("Лист1").Cells(1, 7).Value = 10
1-столбец, 7 - строка или наоборот, не помню
и наоборот
Dim A as Integer
A = myExcel.ActiveWorkbook.Sheets("Лист1").Cells(1, 7).Value
твой цикл заканчивается
wend
в конце как всё сделала делаешь окно видимым
myExcel.Visible = true
чтобы выяснить какой командой вызвать то или иное меню, например поменять шрифт в ячейке, делаешь так:
1. Зпускаешь Excel
2. Кликаешь: Сервис->Макрос->Начать запись -> Ок
появится окошко, с конопкой "стоп" (квадратик)
3. Пишешь текст "123", затем снова выделяешь ячейке и делаешь текст жирным
4. Жмёшь стоп
5. Жмёшь Alt+F11 - открывается окно редактора Visual Basic
6. Выбираешь Modules и дважды щёлкаешь по Module1
появится код
Код: | 'это код для занесения данных в ячейку, но
'лучше это делать как я показал выше
ActiveCell.FormulaR1C1 = "Dimasm"
' код для выделения ячейки
Range("A1").Select
' делаем её жирной
Selection.Font.Bold = True
End Sub |
аналогичное на VB Access будет выглядить так
Код: | ...
myExcel = CreateOLEObject("Exel")
...
myExcel.ActiveCell.FormulaR1C1 = "Dimasm"
myExcel.Range("A1").Select
myExcel.Selection.Font.Bold = True
... |
Так можно "записать" любую команду, даже процесс создания графика, и постмотреть какие команды и зачем.
вот, теперь ищи примеры в поисковике по ключевым словам
excel, OLE автоматизация, OLEObject.... |
|
Вернуться к началу |
|
|
Jane
Зарегистрирован: 19.09.2005 Сообщения: 4
|
Добавлено: Вт Сен 20 2005 03:22 Заголовок сообщения: |
|
|
Спасибо, Dimasm. Буду пробовать. |
|
Вернуться к началу |
|
|
|