Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/26: Рейтинг темы: голосов - 26, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 02.08.2012
Сообщений: 67
1

Экспорт данных из Access 2010 в Excel 2010

16.09.2012, 16:59. Показов 4658. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, уважаемые форумчане.
Пытаюсь допилить свою базу для работы в мануальной клинике. Почти все сделал, но вот не могу доделать экспорт данных из "Основной таблицы" Access в шаблон "Лист.xlxt" для дальнейшего анализа.
Данные почему то экспортируются только в три строки, хотя записей в Accesse больше, а так же при выполнении скрипта выводится ошибка Run-time Eror 94.
Нашел на сайте скрипт и переделал его под себя. Но почему-то все равно не работает(библиотеку Microsoft Excel 14.0 object подключил).
Не подскажете в чем может быть проблема, я начинающий в области Access и VBA и буду благодарен за любую помощь(Скрипт прикручен к кнопке 142 на главной странице).
Привожу также текст скрипта:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub Кнопка142_Click()
Dim app As Excel.Application
Dim strDOT As String
Dim MyTable As DAO.Recordset
 
Set app = New Excel.Application
app.Visible = True
strDOT = CurrentProject.Path & "\" & "Лист.xltx"
app.Workbooks.Add strDOT
 
 
Set MyTable = CurrentDb.OpenRecordset("SELECT [Основная таблица].Фамилия, [Основная таблица].Имя, [Основная таблица].Отчество FROM [Основная таблица];")
 
i = 6
 
Do While Not MyTable.EOF
 
        app.Parent.Range("a" & i).Select
        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("Фамилия"))
        app.Parent.Range("b" & i).Select
        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("Имя"))
        app.Parent.Range("c" & i).Select
        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("Отчество"))
        i = i + 1
    MyTable.MoveNext
Loop
MyTable.Close
End Sub
С уважением, Максим.
Вложения
Тип файла: rar 1.rar (956.2 Кб, 61 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2012, 16:59
Ответы с готовыми решениями:

Перенос старых данных в БД MS Access 2010 из MS Excel 2010
Здравствуйте ! Создаю БД да работы сотрудников. Вроде с основными вопросами справился, но как...

Импорт/Экспорт в Access 2010
Добрый день, уважаемые форумчане!! Уже всю голову сломал над вопросом!! Суть его следующая. Есть...

Связка Access 2010 и Outlook 2010
Доброго времени уважаемые форумчане есть вот такой код Public Sub Кнопка0_Click()...

Импорт данныъ из Excel в Access 2010
Всем доброго дня! У меня такая задача: нужно импортировать данные в таблицу access из листов...

7
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
16.09.2012, 18:09 2
rich650, CopyFromRecordset решит проблему
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...................................
...................................
Set MyTable = CurrentDb.OpenRecordset("SELECT [Основная таблица].Фамилия, [Основная таблица].Имя, [Основная таблица].Отчество FROM [Основная таблица];")
 
i = 6
app.Parent.Range("a" & i).CopyFromRecordset MyTable
 
'Do While Not MyTable.EOF
'
'        app.Parent.Range("a" & i).Select
'        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("Фамилия"))
'        app.Parent.Range("b" & i).Select
'        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("Имя"))
'        app.Parent.Range("c" & i).Select
'        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("Отчество"))
'        i = i + 1
'    MyTable.MoveNext
'Loop
MyTable.Close
End Sub
0
1 / 1 / 0
Регистрация: 02.08.2012
Сообщений: 67
16.09.2012, 18:38  [ТС] 3
Добрый вечер mobile.
Попробовал изменить код, как Вы написали.
Теперь пишет class does not support automation or does not support expected interface - ошибка 430.
В excele вообще ничего не происходит - просто пустой лист.
Ругается на строку app.Parent.Range("a" & i).CopyFromRecordset MyTable
Самое интересное, что в примере, где я взял код все работает, а тут - нет. Пытался дополнительно подключить библиотеку DAO - пишет что она уже используется.
Вот пример, откуда был взят код.
Не могли бы Вы ткнуть носом в чем может быть моя ошибка.
Заранее спасибо.
С Уважением, Максим.

Вот код из примера:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Private Sub Кнопка58_Click()
Dim app As Excel.Application
Dim strDOT As String
Dim MyTable As DAO.Recordset
 
'Открываем эксель, в нем книгу на основе шаблона Журнал регистраций
Set app = New Excel.Application
app.Visible = True
strDOT = CurrentProject.Path & "\" & "Журнал регистраций.xlt"
app.Workbooks.Add strDOT
 
'Создаем набор записей (я его сохранила отдельно, как запрос 111)
Set MyTable = CurrentDb.OpenRecordset("SELECT Заявка.НомЗаявки, Заявка.ДатаРегистрации, [Оператор]![Фамилия] & ' ' & [Оператор]![Имя] & ' ' & [Оператор]![Отчество] AS ФИОоператора, Должность.Должность, Заявка.Аннотация, [Исполнитель]![Фамилия] & ' ' & [Исполнитель]![Имя] & ' ' & [Исполнитель]![Отчество] AS ФИОисполнителя, Заявка.ДатаРешения, Заявка.Комментарий FROM (Должность INNER JOIN Оператор ON Должность.КодДолжности = Оператор.КодДолжности) INNER JOIN (Исполнитель INNER JOIN (Заявка INNER JOIN [Исполнитель по заявке] ON Заявка.НомЗаявки = [Исполнитель по заявке].НомЗаявки) ON Исполнитель.КодИсполнителя = [Исполнитель по заявке].КодИсполнителя) ON Оператор.КодОператора = Заявка.КодОператора")
 
i = 6
'Цикл по нашему набору записей
Do While Not MyTable.EOF
'Начиная с 6-ой строки вставляем в соотв-ие столбцы соотв-ие значения из нашего набора записей
        app.Parent.Range("a" & i).Select
        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("НомЗаявки"))
        app.Parent.Range("b" & i).Select
        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("ДатаРегистрации"))
        app.Parent.Range("c" & i).Select
        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("ФИОоператора"))
        app.Parent.Range("d" & i).Select
        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("Должность"))
        app.Parent.Range("f" & i).Select
        app.Parent.ActiveCell.FormulaR1C1 = CStr(Nz(MyTable.Fields("Аннотация"), ""))
        app.Parent.Range("g" & i).Select
        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("ФИОисполнителя"))
        app.Parent.Range("i" & i).Select
        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("ДатаРешения"))
        app.Parent.Range("j" & i).Select
        app.Parent.ActiveCell.FormulaR1C1 = CStr(MyTable.Fields("Комментарий"))
    i = i + 1
    MyTable.MoveNext
Loop
MyTable.Close
End Sub
Вложения
Тип файла: rar Экспорт в эксель набора записей.rar (174.3 Кб, 92 просмотров)
1
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
16.09.2012, 18:45 4
Вот ваша БД
Вложения
Тип файла: rar ПациентыVII.rar (925.3 Кб, 140 просмотров)
0
1 / 1 / 0
Регистрация: 02.08.2012
Сообщений: 67
16.09.2012, 19:28  [ТС] 5
mobile спасибо, что возитесь со мной.
Все равно выдает ошибку class does not support automation or does not support expected interface.
Мистика какая-то.
В Excele ничего - пустой лист.
У меня Access 2010 может дело в этом?
Заранее извиняюсь за назойливость.
Весь день убил на решение этой задачи, уже голова пухнет.
Вот что выводит Access:
Миниатюры
Экспорт данных из Access 2010 в Excel 2010  
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
16.09.2012, 19:54 6
rich650, когда выйдет ошибка, нажмите кнопку Debug и попадете в код, где желтым будет подсвечена строка с ошибкой. Расскажите здесь на какой команде тормозится.

У меня ошибок с вашй БД, после вставки CopyFromRecordset, нет.
0
1 / 1 / 0
Регистрация: 02.08.2012
Сообщений: 67
16.09.2012, 20:25  [ТС] 7
Вот строка из отладчика

app.Parent.Range("a" & i).CopyFromRecordset MyTable
Миниатюры
Экспорт данных из Access 2010 в Excel 2010   Экспорт данных из Access 2010 в Excel 2010  
0
1 / 1 / 0
Регистрация: 02.08.2012
Сообщений: 67
17.09.2012, 17:42  [ТС] 8
mobile, Спасибо, все заработало.
Помогла переустановка системы и офиса)))
0
17.09.2012, 17:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2012, 17:42
Помогаю со студенческими работами здесь

Импорт из Excel в Access 2010: максимальное количество строк
Добрый день! Проблема такая: Импортирую из Excel в Access таблицу (создаю связанную), в ней...

Макрос данных в ACCESS 2010
Подскажите как создать макрос данных в таблице, делал как в учебном видео выдает ошибку

Сбор данных в Access 2010 из почты
Доброго времени суток! Подскажите, как можно импортировать данные из почты The Bat в Access 2010....

Запрос на выборку данных в Access 2010
Не подумайте, что интернет вчера подключили, ну правда не могу найти. Вопрос ну очень простой,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru