Столкнулся с такой проблемой: скрипт обращается через 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
в коде должно быть конкретно указано куда вы обращаетесь, без всяких ActiveWorkbook и ActiveSheet. а если уж это необходимо, то присваивайте объектным переменным значения эктивбук и эктивщит в начале работы макроса, и далее в макросе используйте эти переменные. Тогда скрипт не будет "обращаться к его листам"
Bamboo, Здравствуйте. у меня порой происходит открытие файла-источника, даже если я просто рефрешу таблицу подключенную через встроенный коннект.
в коде должно быть конкретно указано куда вы обращаетесь, без всяких ActiveWorkbook и ActiveSheet. а если уж это необходимо, то присваивайте объектным переменным значения эктивбук и эктивщит в начале работы макроса, и далее в макросе используйте эти переменные. Тогда скрипт не будет "обращаться к его листам"boa
Т.е. открытие файла происходит не только у меня, значит это нормальный глюк от MS. Как быстрое решение воспользуюсь вашим советом и присвою "объектным переменным значения эктивбук и эктивщит в начале работы макроса..." Как долгосрочное решение сделаю по событию экспорт данных из файла-источника в таблицу аксесс, а потом буду из нее забирать без проблем.
boa, спасибо!
Т.е. открытие файла происходит не только у меня, значит это нормальный глюк от MS. Как быстрое решение воспользуюсь вашим советом и присвою "объектным переменным значения эктивбук и эктивщит в начале работы макроса..." Как долгосрочное решение сделаю по событию экспорт данных из файла-источника в таблицу аксесс, а потом буду из нее забирать без проблем.Bamboo
Т.е. открытие файла происходит не только у меня, значит это нормальный глюк от MS. Как быстрое решение воспользуюсь вашим советом и присвою "объектным переменным значения эктивбук и эктивщит в начале работы макроса..." Как долгосрочное решение сделаю по событию экспорт данных из файла-источника в таблицу аксесс, а потом буду из нее забирать без проблем.
boa, спасибо!
Т.е. открытие файла происходит не только у меня, значит это нормальный глюк от MS. Как быстрое решение воспользуюсь вашим советом и присвою "объектным переменным значения эктивбук и эктивщит в начале работы макроса..." Как долгосрочное решение сделаю по событию экспорт данных из файла-источника в таблицу аксесс, а потом буду из нее забирать без проблем.Bamboo