powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Постоянный экспорт в excel
11 сообщений из 11, страница 1 из 1
Постоянный экспорт в excel
    #39265651
Gerasimovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли экспортировать таблицу в access в excel. То есть, если я просто экспортирую один раз, то при последующих изменениях в таблице в бд, они не будут изменяться в экселе. Может надо в параметрах рыться или код писать, не знаю.
...
Рейтинг: 0 / 0
Постоянный экспорт в excel
    #39265680
Аллюр Д.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем это нужно?

Импортировали данные из базы в экселевский файл, и что дальше?
Пользователь открыл этот файл с импортированными в него данными, что-то исправил, а в исходной базе это не отразится!

Кажется, в Excell'е нет возможности "привязывать" страницу с какой-то таблице или запросу в базе. Можно написать код, который будет автоматически импортировать данные из базы при каждом открывании этого экселевского файла, но... Опять те же вопросы - зачем эта морока? И что делать с данными, которые пользователь изменил в экселевском файле?
...
Рейтинг: 0 / 0
Постоянный экспорт в excel
    #39265785
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аллюр Д.Кажется, в Excell'е нет возможности "привязывать" страницу с какой-то таблице или запросу в базе.

Та не, можно, причем еще и интервал обновлений информации настроить) Несколько вариантов ,через Query Excel, либо через ODBC.
...
Рейтинг: 0 / 0
Постоянный экспорт в excel
    #39265804
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerasimovichМожно ли экспортировать таблицу в access в excel. То есть, если я просто экспортирую один раз, то при последующих изменениях в таблице в бд, они не будут изменяться в экселе. Может надо в параметрах рыться или код писать, не знаю.

Посмотрите в настройках экселя настройку подключения через Query.

Лишних действий из аксесса по экспорту не надо будет делать. Вы подключаетесь в экселе к аксесовской таблице или запросу и при каждом открытии экселя (а также принудительном обновлении, либо через установленный интервал в свойствах ) информация будет абсолютно та же, как и в нужной таблице,либо запросе
...
Рейтинг: 0 / 0
Постоянный экспорт в excel
    #39266207
Аллюр Д.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

Спасибо за информацию, прикольно работает

Я вот только не понял - подключаю в Excell'е таблицу из mdb, вижу данные, но если меняю данные на странице Excell'я, то данные в таблицу базы не запишутся?
Или надо выбрать правильную настройку?
Там есть какие-то варианты, потыкался наудачу, на в таблицу, в mdb, новые данные всё равно не перенеслись
...
Рейтинг: 0 / 0
Постоянный экспорт в excel
    #39266677
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аллюр Д.Сергей Лалов,

Спасибо за информацию, прикольно работает

Я вот только не понял - подключаю в Excell'е таблицу из mdb, вижу данные, но если меняю данные на странице Excell'я, то данные в таблицу базы не запишутся?
Или надо выбрать правильную настройку?
Там есть какие-то варианты, потыкался наудачу, на в таблицу, в mdb, новые данные всё равно не перенеслись

Так автору по теме как раз и не надо организовать обратную связь ) А так реально в базовом варианте обратной связи нет. Это в принципе тоже не проблема, пять строк кода, только в экселе должно обязательно выноситься ключевое поле (или несколько ,если это запрос) и подключенная библиотечка аксесс в экселе. Очень просто.
Делал раньше на работе варианты аксесс+эксель , где эксель рисовал красивые графики (там поразнообразней и покрасивей и не грузит базу аксесс дополнительными объектами).

Если хотите, могу выслать код ,который пишется в экселе, он очень простой.
...
Рейтинг: 0 / 0
Постоянный экспорт в excel
    #39266703
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Сергей Лалов]Аллюр Д.Если хотите, могу выслать код ,который пишется в экселе, он очень простой.

А здесь выложить можно?
...
Рейтинг: 0 / 0
Постоянный экспорт в excel
    #39266704
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри.
Предыдущее сообщение для Сергея Лалова.
...
Рейтинг: 0 / 0
Постоянный экспорт в excel
    #39266717
Аллюр Д.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плюсанусь к ИВП - выкладывайте здесь, может ещё кому-то пригодится

А в какой версии Excell'я появилась эта возможность?
Сейчас попробовал дома в 2003 Офисе - вроде нет такой функции, а на работе смотрел в 2010 - есть
...
Рейтинг: 0 / 0
Постоянный экспорт в excel
    #39266720
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, выкладываю. Старую базку не нашел, настрочил на коленке по быстрому, и проверил, все работает:

Код: vbnet
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.
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Dim PrimaryKey As Integer 'поле ,содержащее ключ из таблицы аксесса
    Dim FieldTableHeader As String ' заголовок поля таблицы экселя, должен быть один и тот же для аксесса
    Dim lastRow As String
    lastRow = Cells(Rows.Count, "C").End(xlUp).Row ' ищет координаты последней строки последнего поля C
    Set KeyCells = Range("A1:" & "C" & lastRow)  'определяем тыкальный диапазон ))) таблица начинается с Координат А
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then ' если тыкнули вне диапазона, то ничего не происходит

If IsNull(Intersect(Columns(1), Rows(Target.Row))) Then
MsgBox "Отсутствует значение ключевого поля для обновления в MS access " 'выбираем значение пересечения текущей ячейки текущей строки и первого столбца
 Else
 PrimaryKey = Intersect(Columns(1), Rows(Target.Row)) ' присваиваем значение переменной ключевого поля
 FieldTableHeader = Cells(1, Target.Column) 'находим название столбца таблицы выделенной ячейки
 
 StrSQL = "UPDATE ваша_таблица SET [" & FieldTableHeader & "] = " & Target & " WHERE ваша_таблица.[ваше_ключевое_поле]= " & PrimaryKey 'собираем запрос
 
Dim db As Database
Set db = OpenDatabase("C:\путь_к_базе\ваша_база.mdb") 'открываем базу mdb
db.Execute (StrSQL) 'выполняем запрос
db.Close
Set db = Nothing

 End If
   End If
End Sub



Работает с mdb, с accdb не проверял. В общем автоматически выгружается таблица из аксесса в экселе, а в самом экселе на событие изменения данных листа написана обработка и внесение данных измененных из экселя в аксесс.
Нужно подключить две библиотеки, Microsoft Access ... и DAO, к примеру 3.6

В 2003м аксессе Microsoft Query есть где то наверное, потому что конструктор Microsoft Query выглядит древним ,наверняка экспортировали из ранних версий аксесса.
...
Рейтинг: 0 / 0
Постоянный экспорт в excel
    #39266734
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного допилил код. Добавил экранирование текстовых значений полей. А также обработку поля экселя,если какое то значение удаляется. То есть вставляемое NULL

Код: vbnet
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.
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Dim PrimaryKey As Integer 'поле ,содержащее ключ из таблицы аксесса
    Dim FieldTableHeader As String ' заголовок поля таблицы экселя, должен быть один и тот же для аксесса
    Dim lastRow As String
    lastRow = Cells(Rows.Count, "C").End(xlUp).Row ' ищет координаты последней строки последнего поля C
    Set KeyCells = Range("A1:" & "C" & lastRow)  'определяем тыкальный диапазон ))) таблица начинается с Координат А
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then ' если тыкнули вне диапазона, то ничего не происходит

If IsNull(Intersect(Columns(1), Rows(Target.Row))) Then
MsgBox "Отсутствует значение ключевого поля для обновления в MS access " 'выбираем значение пересечения текущей ячейки текущей строки и первого столбца
 Else
 PrimaryKey = Intersect(Columns(1), Rows(Target.Row)) ' присваиваем значение переменной ключевого поля
 FieldTableHeader = Cells(1, Target.Column) 'находим название столбца таблицы выделенной ячейки
 If IsNull(Target) Then Target = " " 'если значение удаляется
 StrSQL = "UPDATE ваша_таблица SET [" & FieldTableHeader & "] = " & ("'" & Target & "'") & " WHERE ваша_таблица.[код_счетчик]= " & PrimaryKey 'собираем запрос
 
Dim db As Database
Set db = OpenDatabase("C:\Users\HOME\Desktop\тест.mdb") 'открываем базу mdb
db.Execute (StrSQL) 'выполняем запрос
db.Close
Set db = Nothing
  End If
   End If
    
End Sub



Приложил два тестовых файла базы и экселя в письме. Там путь до своей базы в коде пропишите свой. Либо можно использовать currentProject.Path, но мне лень менять библиотеки и писать в ADO.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Постоянный экспорт в excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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