powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Передать лист в запущенный access vba
19 сообщений из 19, страница 1 из 1
Передать лист в запущенный access vba
    #39570599
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как закинуть книгу, как таблицу в запущенный Access? Закинуть можно запросом, это знаю как. А вот как это сделать в уже открытом access? То есть надо определить запущен или нет, если запущен подключиться к открытой в access базе и выполнить запрос переноса данных с текущего ли та... Как это накодить?
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570612
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GetObject("Access.Application") или что-то в этом роде....
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570656
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, ага, только как подключиться к уже открытой на стороне(access'om) базе? И как найти её, где она лежит?
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570673
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая разница, где она лежит, если ты хочешь сделать BlackeAngelв запущенный Accessили тебе нужно другое - определить, какая база открыта в запущенном аксессе, а потом, минуя аксесс , выгрузить в нее данные?
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570674
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,нет, напрямую загрузить лист/книгу, без открытия/закрытия access
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570676
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelнетЯ вообще теперь не понимаю, что ты хочешь. Раздели в своих мыслях СУБД Аксесс и файл БД (accdb или mdb), который можно открыть и записывать из Аксесс, а можно напрямую - минуя Аксесс.
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570678
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, так, расскажу что хочу, подробнее. Хочу чтоб пользователь в excel нажал на кнопку и у него лист выгрузился в базу Access: 1)если access закрыт, то на рабочем столе создать БД, выгрузить туда лист/книгу, запустить access и в нем открыть эту БД
2) если access запущен и в нем открыта любая БД, то выгрузить в неё лист/книгу, если не открыта БД - см п.1)

Вот, как то так. Большую часть я знаю как реализовать, не знаю как правильно.2 реализовать. От слова совсем.
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570860
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelБольшую часть я знаю как реализоватьок, ну а какую не знаешь? про поиск аксесса я уже написал выше, как узнать имя текущей базы гуглится на раз http://www.sql.ru/forum/385255/imya-fayla-tekushhey-bazy-dannyh
какие остались вопросы?
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570900
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,какой и был изначально
BlackeAngelShocker.Pro,нет, напрямую загрузить лист/книгу, без открытия/закрытия access
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570901
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
То что вы дали это делается в самом access, а не из excel. Current не вернёт access базу. Немного забыли, что стартуем из excel?
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570934
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего я не забыл
Это ты забыл мой первый ответ
Получаешь экземпляр Аксесса И У НЕГО спрашиваешь имя текущей базы. Хоть из экселя, хоть из VBS-а
Код: vbnet
1.
2.
Set acc = GetObject(, "Access.Application")
Debug.Print acc.CurrentDb.Name
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570935
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, если делать импорт открытой книги excel в access, то access ругается на то что она занята. И обратное справедливо. Вот что меня останавливает...
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570942
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем тебе делать импорт в Аксесс, если ты только что сам сказал
BlackeAngelесли access закрыт, то на рабочем столе создать БД, выгрузить туда лист/книгу, запустить accessто есть ты не планировал пользоваться импортом аксесса для того, чтобы передать данные в БД. Для открытой базы делаешь все то же самое - выгружаешь данные прямо в БД, аксесс для этого не нужен.
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570945
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,разве с запущенным access такое прокатит?
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39570963
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Базы данных - они многопользовательские по определению ))
mdb/accdb - не исключение
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39572457
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, в общем с вашими советами накуролесил такое:
Код: 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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Sub ExceltoAccess()
    Worktable = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    BaseName = Worktable & "\" & ActiveWorkbook.Name & ".mdb"
    Select Case CLng(Split(Application.Version, ".")(0))
        Case Is < 12
            dbConnectStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & BaseName & ";"
        Case Is >= 12
            dbConnectStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & BaseName & ";"
    End Select
    On Error Resume Next
    Set oAccess = GetObject(, "Access.Application")
    If Err.Number = 429 Then
        Set Catalog = CreateObject("ADOX.Catalog")
        Catalog.Create dbConnectStr
        Set Catalog = Nothing
        Set cnt = New ADODB.Connection
        cnt.Open dbConnectStr
        Set rs = CreateObject("ADODB.Recordset")
        sSQL = "SELECT * INTO [" & ActiveSheet.Name & "] FROM [Excel 12.0;HDR=YES;IMEX=1;DATABASE=" & ActiveWorkbook.FullName & "].[" & ActiveSheet.Name & "$]"
        Set rs = cnt.Execute(sSQL)
        cnt.Close
        Set sAccess = CreateObject("Access.Application")
        sAccess.Visible = True
        sAccess.UserControl = True
        sAccess.OpenCurrentDataBase (BaseName)
    Else
        basepath = oAccess.CurrentDb.Name
        If Err.Number = 91 Then
            Set Catalog = CreateObject("ADOX.Catalog")
            Catalog.Create dbConnectStr
            Set Catalog = Nothing
            Set sAccess = GetObject(, "Access.Application")
            sAccess.OpenCurrentDataBase (BaseName)
        End If
        oAccess.CurrentProject.Connection.Execute "SELECT * INTO [" & ActiveSheet.Name & "] FROM [Excel 12.0;HDR=YES;IMEX=1;DATABASE=" & ActiveWorkbook.FullName & "].[" & ActiveSheet.Name & "$]"
    End If
    Err.Clear
End Sub


Есть недостаток, после загрузки в БД таблица в Access не отображается. Но если закрыть и открыть БД, то все появляется. Как это исправить?
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39572477
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel
Код: vbnet
1.
On Error Resume Next

забыл отменить после использования


Если я правильно понял, требуется в Аксессе обновить список таблиц в главном окне? Не знаю, надо в Аксессе спросить.
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39572484
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Кстати, а как выключить? Ни разу не выключал просто))
...
Рейтинг: 0 / 0
Передать лист в запущенный access vba
    #39572503
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Передать лист в запущенный access vba
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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