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

Вот, как то так. Большую часть я знаю как реализовать, не знаю как правильно.2 реализовать. От слова совсем.
...
Рейтинг: 0 / 0
16.12.2017, 23:26
    #39570860
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать лист в запущенный access vba
BlackeAngelБольшую часть я знаю как реализоватьок, ну а какую не знаешь? про поиск аксесса я уже написал выше, как узнать имя текущей базы гуглится на раз http://www.sql.ru/forum/385255/imya-fayla-tekushhey-bazy-dannyh
какие остались вопросы?
...
Рейтинг: 0 / 0
17.12.2017, 07:15
    #39570900
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать лист в запущенный access vba
Shocker.Pro,какой и был изначально
BlackeAngelShocker.Pro,нет, напрямую загрузить лист/книгу, без открытия/закрытия access
...
Рейтинг: 0 / 0
17.12.2017, 07:18
    #39570901
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать лист в запущенный access vba
Shocker.Pro,
То что вы дали это делается в самом access, а не из excel. Current не вернёт access базу. Немного забыли, что стартуем из excel?
...
Рейтинг: 0 / 0
17.12.2017, 12:15
    #39570934
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать лист в запущенный access vba
Ничего я не забыл
Это ты забыл мой первый ответ
Получаешь экземпляр Аксесса И У НЕГО спрашиваешь имя текущей базы. Хоть из экселя, хоть из VBS-а
Код: vbnet
1.
2.
Set acc = GetObject(, "Access.Application")
Debug.Print acc.CurrentDb.Name
...
Рейтинг: 0 / 0
17.12.2017, 12:19
    #39570935
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать лист в запущенный access vba
Shocker.Pro, если делать импорт открытой книги excel в access, то access ругается на то что она занята. И обратное справедливо. Вот что меня останавливает...
...
Рейтинг: 0 / 0
17.12.2017, 13:00
    #39570942
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать лист в запущенный access vba
А зачем тебе делать импорт в Аксесс, если ты только что сам сказал
BlackeAngelесли access закрыт, то на рабочем столе создать БД, выгрузить туда лист/книгу, запустить accessто есть ты не планировал пользоваться импортом аксесса для того, чтобы передать данные в БД. Для открытой базы делаешь все то же самое - выгружаешь данные прямо в БД, аксесс для этого не нужен.
...
Рейтинг: 0 / 0
17.12.2017, 13:08
    #39570945
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать лист в запущенный access vba
Shocker.Pro,разве с запущенным access такое прокатит?
...
Рейтинг: 0 / 0
17.12.2017, 13:29
    #39570963
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать лист в запущенный access vba
Базы данных - они многопользовательские по определению ))
mdb/accdb - не исключение
...
Рейтинг: 0 / 0
20.12.2017, 08:37
    #39572457
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать лист в запущенный access vba
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
20.12.2017, 09:54
    #39572477
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать лист в запущенный access vba
BlackeAngel
Код: vbnet
1.
On Error Resume Next

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


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


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