Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Соединение через ADODB с редактируемым Excel файлом - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Соединение через ADODB с редактируемым Excel файлом (Макросы/Sub)
Соединение через ADODB с редактируемым Excel файлом
Bamboo Дата: Четверг, 16.05.2019, 23:22 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Столкнулся с такой проблемой: скрипт обращается через ADODB к другому файлу Excel, на сетевом диске. При этом иногда без какой-либо системы вместо соединения открывается файл с которым соединяемся, он становится активным и скрипт начинает обращаться к его листам, т.к. файл-источник становится активным. Пока заметили, что так происходит, если файл -источник открыт другим пользователем. Мы предположили, что скорее всего это происходит, когда другой пользователь редактирует файл-источник.
Вопросы:
1. Правильно ли наше предположение?
2. Это нормально?
3. Как бороться?

Ниже код обращения:

[vba]
Код
sFullFileName = sPath & sFileName 'формируем путь к файлу включая его название'
    With CreateObject("ADODB.Connection")
        'подключаемся к файлу'
        .Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};ReadOnly=1;DBQ=" & sFullFileName & ";"
        'получаем кол-во строк в запросе
        Set objRS1 = .Execute("SELECT COUNT(*) FROM [" & sShName & "$" & sADORng & "]")
        li = objRS1.Fields(0).Value
        'извлекаем записи из указанного диапазона листа в objRS
        Set objRS = .Execute("SELECT * FROM [" & sShName & "$" & sADORng & "]")
    End With
[/vba]

Заранее спасибо!
 
Ответить
СообщениеСтолкнулся с такой проблемой: скрипт обращается через ADODB к другому файлу Excel, на сетевом диске. При этом иногда без какой-либо системы вместо соединения открывается файл с которым соединяемся, он становится активным и скрипт начинает обращаться к его листам, т.к. файл-источник становится активным. Пока заметили, что так происходит, если файл -источник открыт другим пользователем. Мы предположили, что скорее всего это происходит, когда другой пользователь редактирует файл-источник.
Вопросы:
1. Правильно ли наше предположение?
2. Это нормально?
3. Как бороться?

Ниже код обращения:

[vba]
Код
sFullFileName = sPath & sFileName 'формируем путь к файлу включая его название'
    With CreateObject("ADODB.Connection")
        'подключаемся к файлу'
        .Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};ReadOnly=1;DBQ=" & sFullFileName & ";"
        'получаем кол-во строк в запросе
        Set objRS1 = .Execute("SELECT COUNT(*) FROM [" & sShName & "$" & sADORng & "]")
        li = objRS1.Fields(0).Value
        'извлекаем записи из указанного диапазона листа в objRS
        Set objRS = .Execute("SELECT * FROM [" & sShName & "$" & sADORng & "]")
    End With
[/vba]

Заранее спасибо!

Автор - Bamboo
Дата добавления - 16.05.2019 в 23:22
boa Дата: Пятница, 17.05.2019, 14:23 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 378
Репутация: 102 ±
Замечаний: 0% ±

2013, 365
Bamboo,
Здравствуйте.
у меня порой происходит открытие файла-источника, даже если я просто рефрешу таблицу подключенную через встроенный коннект.
Правильно ли наше предположение?
Специально не отслеживал, т.к. мне это не мешает.
2 - не нормально, но с этим можно жить
3. Как бороться?
в коде должно быть конкретно указано куда вы обращаетесь, без всяких ActiveWorkbook и ActiveSheet. а если уж это необходимо, то присваивайте объектным переменным значения эктивбук и эктивщит в начале работы макроса, и далее в макросе используйте эти переменные. Тогда скрипт не будет "обращаться к его листам"


 
Ответить
СообщениеBamboo,
Здравствуйте.
у меня порой происходит открытие файла-источника, даже если я просто рефрешу таблицу подключенную через встроенный коннект.
Правильно ли наше предположение?
Специально не отслеживал, т.к. мне это не мешает.
2 - не нормально, но с этим можно жить
3. Как бороться?
в коде должно быть конкретно указано куда вы обращаетесь, без всяких ActiveWorkbook и ActiveSheet. а если уж это необходимо, то присваивайте объектным переменным значения эктивбук и эктивщит в начале работы макроса, и далее в макросе используйте эти переменные. Тогда скрипт не будет "обращаться к его листам"

Автор - boa
Дата добавления - 17.05.2019 в 14:23
Bamboo Дата: Пятница, 17.05.2019, 17:29 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
boa, спасибо!

Т.е. открытие файла происходит не только у меня, значит это нормальный глюк от MS.
Как быстрое решение воспользуюсь вашим советом и присвою "объектным переменным значения эктивбук и эктивщит в начале работы макроса..."
Как долгосрочное решение сделаю по событию экспорт данных из файла-источника в таблицу аксесс, а потом буду из нее забирать без проблем.
 
Ответить
Сообщениеboa, спасибо!

Т.е. открытие файла происходит не только у меня, значит это нормальный глюк от MS.
Как быстрое решение воспользуюсь вашим советом и присвою "объектным переменным значения эктивбук и эктивщит в начале работы макроса..."
Как долгосрочное решение сделаю по событию экспорт данных из файла-источника в таблицу аксесс, а потом буду из нее забирать без проблем.

Автор - Bamboo
Дата добавления - 17.05.2019 в 17:29
Bamboo Дата: Пятница, 17.05.2019, 17:30 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
boa, спасибо!

Т.е. открытие файла происходит не только у меня, значит это нормальный глюк от MS.
Как быстрое решение воспользуюсь вашим советом и присвою "объектным переменным значения эктивбук и эктивщит в начале работы макроса..."
Как долгосрочное решение сделаю по событию экспорт данных из файла-источника в таблицу аксесс, а потом буду из нее забирать без проблем.
 
Ответить
Сообщениеboa, спасибо!

Т.е. открытие файла происходит не только у меня, значит это нормальный глюк от MS.
Как быстрое решение воспользуюсь вашим советом и присвою "объектным переменным значения эктивбук и эктивщит в начале работы макроса..."
Как долгосрочное решение сделаю по событию экспорт данных из файла-источника в таблицу аксесс, а потом буду из нее забирать без проблем.

Автор - Bamboo
Дата добавления - 17.05.2019 в 17:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Соединение через ADODB с редактируемым Excel файлом (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!