powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Макрос для быстрого импорта из Excel
15 сообщений из 40, страница 2 из 2
Макрос для быстрого импорта из Excel
    #39306361
час58У меня этот код таблицы создаёт, а данные не перекидывает. Если таблицы создает, значит TransferSpreadsheet выполняется. Вы уверены в своем файле? Если импорт выполнить вручную - данные зальются?
Киньте файл для опытов.
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39306371
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ),
файл для опытов
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39306427
час58файл для опытов Это вы прикольнулись с файлом или он реально такой?
Тем не менее три таблицы создались. Две, как и положено, пустые, а данные с Лист3 загрузились. Единственное замечание - методу TransferSpreadsheet указано, что заголовки есть, а на листе их нет.
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39306431
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ),
это я эксперимент делал. и вот такой файл использовал.
----------------------------
Спасибо.
(лист-то был № 3 - вот я лох...)
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39307503
Владимир86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Владимир86У меня возникла проблема при моделировании. строчка
Код: vbnet
1.
 Set db = OpenDatabase(sFilePath, False, True, "Excel 12.0 Xml;") 

выдает ошибку: 3027 База данных или объект доступны только для чтения. Подскажите, как лечить? Именно на этой строке? У меня не выдает.
В этот момент файл закрыт? Если файл открывать вручную, ничего не сообщает? Редактировать можно? Это на любом файле, не только из этой группы?
Попробуйте True в 3-м аргументе (Только чтение) заменить на False.
Похоже, что-то с настройками безопасности файла или системы.
Может пришлете файл для опытов? Можно без данных.

Ex- закрыт, вообще делал на разных файлах, не дает выполнение=(Я тоже думал про настройки, отключал все политики безопастности, но не пропускает. Файл во вложении, данные могут быть любыми. Стоит 2013 Access,Excel
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39307532
Владимир86, и этот файл прекрасно загрузился. Офис 2010.
Это именно тот файл, что у вас не открывается?
Владимир86Я тоже думал про настройки, отключал все политики безопастности, но не пропускает. Что именно вы делали? Уровень безопасности макросов в Ёкселе вы понижали? Т.е. в настойках ленты включить флажок "Разработчик" и на этой вкладке - "безопасность макросов".
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39307537
Владимир86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Владимир86, и этот файл прекрасно загрузился. Офис 2010.
Это именно тот файл, что у вас не открывается?
Владимир86Я тоже думал про настройки, отключал все политики безопастности, но не пропускает. Что именно вы делали? Уровень безопасности макросов в Ёкселе вы понижали? Т.е. в настойках ленты включить флажок "Разработчик" и на этой вкладке - "безопасность макросов".

Да файл этот. Да отключил все политики безопастности и в excel, и в access
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39307634
Владимир86[Да файл этот. Да отключил все политики безопастности и в excel, и в access Даже не знаю, чем вам помочь. Нужно попробовать на другом компе с Оф2013.
Или попросить коллег на форуме.
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39307798
Владимир86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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 DeleteAllTables()
Dim db As Database, i As Integer, sName As String

    Set db = CurrentDb
    For i = db.TableDefs.Count - 1 To 0 Step -1
        sName = db.TableDefs(i).Name
'Debug.Print sName
     If sName Like "MSys*" Then
        'system tables
     Else
        db.TableDefs.Delete sName
     End If
    Next
End Sub

Sub ImportFromExcel()
Dim db As Database, i As Integer, sName As String, sFilePath

    sFilePath = CurrentProject.Path & "\" & "M.xlsm"
    'Удаляем таблицы
    Call DeleteAllTables
    
    'Открываем файл Excel как БД
    Set db = OpenDatabase(sFilePath, False, True, "Excel 12.0 Xml;")
    For i = 0 To db.TableDefs.Count - 1
    'Возвращает имена листов (с "$" в конце) и имена интервалов.
        sName = db.TableDefs(i).Name
     If sName Like "*$" Then
        'Обрабатываем только листы
'Debug.Print sName
        sName = Left$(sName, Len(sName) - 1)
        If sName <> "ПереченьМОП" Then
        'Импортируем текущий лист
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, sName, sFilePath, True, sName & "$"
        End If
     End If
    Next
End Sub



ДРУЗЬЯ, помогите протестировать в Office 2013 работоспособность данного кода с файлом во вложении. Большое спасибо!
проблемы у меня --->
Код: vbnet
1.
 Set db = OpenDatabase(sFilePath, False, True, "Excel 12.0 Xml;") 

, ошибка 3027 - Объект доступен только для чтения.
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39307800
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир86,

а скопировать все данные в новый чистый лист - пробовали?
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39307836
Владимир86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
час58Владимир86,

а скопировать все данные в новый чистый лист - пробовали?
И копировать и новые книги, как в access, так и в excel, ничего не помогает. Сохранял в разные форматы excel и опять не помогло.
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39307858
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир86,

это как буд-то пароль на данные.
=========================
Жаль у меня нет 2013 ...
но что-то как то не понятно.
--------------------------------------------
Такое бывает когда с другого компа приходит лист(книга)
типа неизвестный издатель.....

А другие данные, другие документы , как себя ведут? - все так?
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39307866
Владимир86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
час58Владимир86,

это как буд-то пароль на данные.
=========================
Жаль у меня нет 2013 ...
но что-то как то не понятно.
--------------------------------------------
Такое бывает когда с другого компа приходит лист(книга)
типа неизвестный издатель.....

А другие данные, другие документы , как себя ведут? - все так?

Вообще данная процедура не отрабатывает с любыми файлами. Какие другие данные? все остальное у меня работает=)
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39308188
Давайте иначе:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub ImportFromExcel2()
Dim WB As Object, WS As Object, sName As String, sFilePath
    sFilePath = CurrentProject.Path & "\" & "Test.xlsm"
    
    Call DeleteAllTables
    
    'Получаем доступ к объектной модели рабочей книги.
    Set WB = GetObject(sFilePath)

    For Each WS In WB.Worksheets
         sName = WS.Name
     'Игнорируем пустые листы.
     If WS.UsedRange.Address(0, 0) <> "A1" Then
        If sName <> "ПереченьМОП" Then
        'Импортируем текущий лист
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, sName, sFilePath, True, sName & "$"
        End If
     End If
    Next
End Sub

Теоретически это работает медленнее. Зато легко определяется пустой лист.

ЗЫ. Ваш офис случайно не 64-битный?
...
Рейтинг: 0 / 0
Макрос для быстрого импорта из Excel
    #39308423
Владимир86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Давайте иначе:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub ImportFromExcel2()
Dim WB As Object, WS As Object, sName As String, sFilePath
    sFilePath = CurrentProject.Path & "\" & "Test.xlsm"
    
    Call DeleteAllTables
    
    'Получаем доступ к объектной модели рабочей книги.
    Set WB = GetObject(sFilePath)

    For Each WS In WB.Worksheets
         sName = WS.Name
     'Игнорируем пустые листы.
     If WS.UsedRange.Address(0, 0) <> "A1" Then
        If sName <> "ПереченьМОП" Then
        'Импортируем текущий лист
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, sName, sFilePath, True, sName & "$"
        End If
     End If
    Next
End Sub

Теоретически это работает медленнее. Зато легко определяется пустой лист.

ЗЫ. Ваш офис случайно не 64-битный?

Вы гений! Работает шайтан машина! Офис у меня 32 разрядный.
Спасибо.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Макрос для быстрого импорта из Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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