|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Работа с книгой которая не создана на накопителе |
|
|
VBA - Работа с книгой которая не создана на накопителе
|
|
Старожил Сообщения: 329 |
Приветствую всех. Подскажите, как работать с книгой, которую не сохранили ещё. В Excel нажали создать книгу, и работают с ней. Теперь надо отработать макрос, но тк макрос работает с книгами которые уже созданы на жёстком диске/накопителе, о выдает ошибку, тк не находит файл.
|
|
|
------- Отправлено: 08:25, 10-02-2021 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать blackeangel, какой именно макрос?
|
|
Отправлено: 20:45, 10-02-2021 | #2 |
|
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Iska, перенос всего содержимого листа в БД Access. Суть в том что всё падает, на том, если файл открывается из письма почты outlook, то есть путь к файлу как бы есть, но видимо доступа к нему нет. Поэтому и падает. Решил клонированием активной книги в теме, и брать данные из неё. Однако это костыль. Вот и думаю, как взять данные с листа быстро и без обращения к жёсткому диску.
|
|
------- Отправлено: 22:05, 10-02-2021 | #3 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата blackeangel:
Покажите код макроса. Где он хранится. Как вызывается. |
|
|
Отправлено: 22:48, 10-02-2021 | #4 |
|
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Iska,
Sub ExceltoAccessList()
Worktable = CreateObject("WScript.Shell").SpecialFolders("Desktop")
BaseName = Worktable & "\" & ActiveWorkbook.Name & ".mdb"
tmppath = Environ("TEMP")
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")
Set fso = CreateObject("Scripting.FileSystemObject")
If Err.Number = 429 Then
On Error GoTo 0
If fso.FileExists(BaseName) Then fso.DeleteFile BaseName, True
If fso.FileExists(tmppath & "\" & ActiveWorkbook.Name) Then fso.DeleteFile tmppath & "\" & ActiveWorkbook.Name, True
ActiveWorkbook.SaveCopyAs tmppath & "\" & ActiveWorkbook.Name
Set Catalog = CreateObject("ADOX.Catalog")
Catalog.Create dbConnectStr
Set Catalog = Nothing
Set cnt = New ADODB.Connection
cnt.Open dbConnectStr
sSQL = "SELECT * INTO [" & ActiveSheet.Name & "] FROM [Excel 12.0;HDR=YES;IMEX=1;DATABASE=" & tmppath & "\" & ActiveWorkbook.Name & "].[" & ActiveSheet.Name & "$]"
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 fso.FileExists(tmppath & "\" & ActiveWorkbook.Name) Then fso.DeleteFile tmppath & "\" & ActiveWorkbook.Name, True
ActiveWorkbook.SaveCopyAs tmppath & "\" & ActiveWorkbook.Name
If Err.Number = 91 Then
On Error GoTo 0
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(BaseName) Then fso.DeleteFile BaseName, True
Set Catalog = CreateObject("ADOX.Catalog")
Catalog.Create dbConnectStr
Set Catalog = Nothing
Set oAccess = GetObject(, "Access.Application")
oAccess.OpenCurrentDataBase (BaseName)
End If
On Error GoTo 0
oAccess.CurrentProject.Connection.Execute "SELECT * INTO [" & ActiveSheet.Name & "] FROM [Excel 12.0;HDR=YES;IMEX=1;DATABASE=" & tmppath & "\" & ActiveWorkbook.Name & "].[" & ActiveSheet.Name & "$]"
oAccess.RefreshDataBaseWindow
End If
If fso.FileExists(tmppath & "\" & ActiveWorkbook.Name) Then fso.DeleteFile tmppath & "\" & ActiveWorkbook.Name, True
End Sub
Вызывается кнопкой надстройки Ошибка в строке SELECT * INTO [" & ActiveSheet.Name & "] FROM [Excel 12.0;HDR=YES;IMEX=1;DATABASE=" & tmppath & "\" & ActiveWorkbook.Name & "].[" & ActiveSheet.Name & "$]" Текст ошибки примерно такой - лист2$ недопустимое имя. Назовите по другому или убедитесь что оно есть. Если файл из почты сохранить в другое место, всё работает без проблем. Но, тк это правленый вариант, то этой ошибки вы не увидите. Ошибка была когда вместо tmppath & "\" & ActiveWorkbook.Name было ActiveWorkbook.FullName |
|
|
------- Отправлено: 10:59, 11-02-2021 | #5 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата blackeangel:
|
|
|
Отправлено: 17:20, 11-02-2021 | #6 |
|
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Iska, да, в Excel
|
|
------- Отправлено: 17:24, 11-02-2021 | #7 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| HDD - Не видит файлы на внешнем накопителе. | delorun | Накопители (SSD, HDD, USB Flash) | 1 | 30-08-2016 13:59 | |
| Интерфейс - Как включить кеширование(предпросмотр фото) на сетевом накопителе? | HarrysFerrarievich | Microsoft Windows 7 | 0 | 23-02-2014 03:08 | |
| MySQL - Как подключиться к MySql на сетевом накопителе данных | andrystepa | Программирование и базы данных | 1 | 02-05-2009 23:58 | |
| как обезопасить данные на флеш накопителе, если на компьютере клиента вирусы? | crayon1981 | Защита компьютерных систем | 10 | 13-04-2009 05:48 | |
| Доступ - Приложение не обнаруживает ключ доступа к нему, записанный на USB-накопителе | 1AIV | Microsoft Windows Vista | 1 | 20-09-2007 15:09 | |
|