Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача данных из Excell в таблицу Access 
:(
    Опции темы
Shuriman
Дата 7.12.2004, 06:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 18.11.2004
Где: пЫтер

Репутация: нет
Всего: нет



мне тут задали задачку. нужно данные из определенных ячеек Excell перенести в определенную таблицу Access средствами VBA. Фактически вопросов несколько:
1. Как считать значения ячеек таблицы excell.
2. Как открыть для записи файл .mdb для передачи данных.
3. Можно ли будет использовать при этом функциб на добавление, которая описана в одном из модулей базы в Access.
PM MAIL WWW ICQ   Вверх
Akina
Дата 7.12.2004, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



1) Cells().Value
2) Jet/ADO/DAO
3) Зачем?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Shuriman
Дата 7.12.2004, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 18.11.2004
Где: пЫтер

Репутация: нет
Всего: нет



Akina
ну есть функция на добавление.
данные могут добавляться как из аксесса, непосредственно, так и из excell.

а можно поподробнее про первые два пункта?
PM MAIL WWW ICQ   Вверх
HuiopHuiop
Дата 12.12.2004, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.12.2004

Репутация: нет
Всего: нет



меня наоборот проблема есть
есть база данных написанная на access а надо чтобы определённые таблицы
при открытии excel постоянно брались из access
как это сделать программно ?
PM MAIL   Вверх
FINANSIST
Дата 14.5.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 1
Всего: 23



Я при написании моделей в Excel пользовался 2 методами, в зависимости от требований
(1) Многопользовательская выгрузка из  ACCESS в EXCEL без использования технологии D.A.O.                                                                
Требования:                                                    
1) ДАННЫЕ ИЗ БАЗЫ ДОЛЖНЫ ГРУЗИТЬСЯ И ОБНОВЛЯТЬСЯ В НЕОГРАНИЧЕННОЕ КОЛИЧЕСТВО МОДЕЛЕЙ EXCEL                
2) ДАННЫЕ ИЗ БАЗЫ ДОЛЖНЫ ГРУЗИТЬСЯ И ОБНОВЛЯТЬСЯ ОДНОВРЕМЕННО ДЛЯ НЕСКОЛЬКИХ ПОЛЬЗОВАТЕЛЕЙ В РЕЖИМЕ ON-LINE        
3) ДАННЫЕ ИЗ БАЗЫ ДОЛЖНЫ ГРУЗИТЬСЯ И ОБНОВЛЯТЬСЯ  РЕАГИРУЯ НА СОБЫТИЯ В МОДЕЛЯХ EXCEL                    
4) ДАННЫЕ ИЗ БАЗЫ ДОЛЖНЫ ГРУЗИТЬСЯ И ОБНОВЛЯТЬСЯ ВНЕЗАВИСИМОСТИ ОТ ТЕКУЩЕГО МЕСТА СОХРАНЕНИЯ МОДЕЛЕЙ EXCEL (ЛИБО МЕСТА ПЕРЕМЕЩЕНИЯ МОДЕЛЕЙ EXCEL) КАК НА ЖЁСТКИХ ДИСКАХ, ТАК И В ЛОКАЛЬНЫХ СЕТЯХ                        
5) ДАННЫЕ ИЗ БАЗЫ ДОЛЖНЫ ГРУЗИТЬСЯ И ОБНОВЛЯТЬСЯ  ЗА МИНИМАЛЬНОЕ ВРЕМЯ БЕЗ ВИЗУАЛЬНОГО ОТОБРАЖЕНИЯ ПРОЦЕССА ОБНОВЛЕНИЙ И ДИАЛОГОВЫХ ОКОН                                                    
6) ДОЛЖНА СУЩЕСТВОВАТЬ ВОЗМОЖНОСТЬ ПРЕДВАРИТЕЛЬНОЙ ГРУППИРОВКИ,СОРТИРОВКИ ЛИБО ДРУГИХ ДЕЙСТВИЙ С ДАННЫМИ ПЕРЕД ВЫГРУЗКОЙ В МОДЕЛИ                                                        
7) ДАННЫЕ ДОЛЖНЫ ЗАГРУЗИТЬСЯ ОДИН РАЗ И ОСТАВАТЬСЯ В ПАМЯТИ МОДЕЛИ, НЕЗАВИСИМО ОТ ТОГО ВИСИТ ДИАЛОГОВАЯ ФОРМА, ИЛИ ОНА УЖЕ ВЫГРУЖЕНА                                                                
СПРАВКА:                                                        
Файлы запросов представляют собой текстовые файлы, содержащие сведения об источнике данных. Хранящийся набор сведений об «источнике», служащих для подключения к базе данных. Источник данных может содержать сведения об имени и местоположении сервера баз данных, имени драйвера базы данных, а также данные, которые могут потребоваться для подключения к базе, включая имя сервера, на котором хранятся данные, и информацию о подключении, вводимую при создании источника данных. Файлы запросов позволяют осуществлять доступ к запросам совместно с другими пользователями.        
Реализованная технология]
                                                                
В модели формируется лист "справочник" для выгрузки данных                                
Данные//Импорт внешних данных//Создать запрос                                    
Отключаем мастер отчётов и подключаемся к базе данных                                
Выполняем в Microsoft Query предварительную обработку ( если таковая требуется)                            
Сохраняем запрос и выгружаем данные в справочник                                        
Правый клик на данных//Свойства диапозона данных                                        
 - Обязательна галка на "сохранить определение запроса"                                    
 - Обязательна галка на "фоновое обновление"                                        
 - Желательна галка на "включить имена полей"                                        
 - Выбрать  пункт в блоке "Если количество строк в диапозоне изменится:"                                
Выделяем ячейку с первой записью (на строку ниже заголовка) и присваиваем ей имя (напр. "MacroStart")                    
Всвязи с тем что справочник с таким запросом не может быть защищён ( иначе запрос не обновится),мы его скрываем через VBA, чтобы пользователь не мог его отобразить    (Properties//xlSheetVeryHidden)                                    
Пишем код обновления запроса на события:
Код

List = ActiveSheet.Name
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Sheets("справочник").Visible = True
Sheets("справочник").Activate
ActiveSheet.Range("MacroStart").Select '-например это первый контрагент по списку
Selection.QueryTable.Refresh BackgroundQuery:=False '-обновляемся
Sheets(List).Select
Application.Sheets("справочник").Visible = xlVeryHidden
Application.ScreenUpdating = True
Application.EnableEvents = True



Добавлено через 2 минуты и 15 секунд
Многопользовательская выгрузка из  ACCESS в EXCEL c использованием технологии D.A.O.
(Необходимо подключить библиотеку Microsoft DAO 3.6 Object Library !!!!)
"Пример1: Есть в Экселе на листе элемент управления ComboBox1 
(Список), необходимо внести в него уникальный список контрагентов из БД"
        
Код

Dim dbAccess As Database
        Dim reRecordSet As Recordset
        Dim stSQL As String
    On Error GoTo ErrorsDB
    Set dbAccess = OpenDatabase("\\server\обмен\Финансовый отдел\БазыДанных\ContractorsBase.mdb") 
    stSQL = "SELECT distinct Contractors.ContraName FROM Contractors order by Contractors.ContraName "
    Set reRecordSet = dbAccess.OpenRecordset(stSQL) ' - коннектимся
    If (reRecordSet.RecordCount > 0) Then
       reRecordSet.MoveFirst
       Do While Not reRecordSet.EOF
       Name = reRecordSet!ContraName   ' - обязательно имя используемого поля базы данных "ContraName"
     Sheets(1).ComboBox1.AddItem Name
        reRecordSet.MoveNext
       Loop
    Else
        MsgBox "Not Found"
    End If
     reRecordSet.Close
        dbAccess.Close
        GoTo Ends
ErrorsDB:
    MsgBox "Произошла ошибка"
Ends:
End Sub

Пример2: Необходимо заполнить таблицу
Код

Sub DAO()
Dim dbs As Database
Dim recset As Recordset
Dim rSql As String
Set dbs = OpenDatabase("\\server\обмен\Финансовый отдел\Ананьев Г.А\Базы_Данных_Access\BUDJETS_DATA_1.0.mdb")
rSql = "SELECT OPERLIST.Autor, OPERLIST.DateRecord, OPERLIST.Source, OPERLIST.Sum_Budjet "
rSql = rSql & " FROM OPERLIST WHERE (((OPERLIST.Org_Name) Like '*лимп*'));" ' - перенос строки SQL на новую
Set recset = dbs.OpenRecordset(rSql)
recset.MoveLast '-передвигаемся к последней записи, чтобы показать общее число записей т.к. RecordCount отражает только текущую запись
Debug.Print recset.RecordCount & " - число записей " ' - показываем в Immediate число записей
Debug.Print recset.Fields.Count & " - число столбцов " ' - показываем в Immediate число столбцов
recset.MoveFirst
For Col = 0 To recset.Fields.Count - 1
        ActiveCell.Offset(0, Col).Value = recset.Fields(Col).Name ' - пробиваем в Excel заголовки таблицы
    Next Col
ActiveCell.Offset(1, 0).Select
Do While Not recset.EOF
    For Col = 0 To recset.Fields.Count - 1
        ActiveCell.Offset(0, Col).Value = recset.Fields(Col).Value ' - заполняем таблицу
    Next Col
    recset.MoveNext
    ActiveCell.Offset(1, 0).Activate
Loop
recset.Close
dbs.Close
End Sub



--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
bopoha
Дата 14.5.2008, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Очень сильно сомневаюсь, что в первом случае DAO не используется. Может в mdb ссылка и не нужна, а вот для доступа со сторны Excel в Access она понадобиться.

Чтобы не приходилось делать recset.MoveLast при открытии набора используется параметр dbOpenSnapshot.

По поводу первого варианта - можно готовый пример?
PM MAIL WWW ICQ Skype GTalk   Вверх
FINANSIST
Дата 28.5.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 1
Всего: 23



Ага, лови! smile 

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  ______.rar 14,26 Kb


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.1091 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.