Я писал некоторые макросы, используя запросы ADODB для извлечения данных из других книг, используя Excel 2013. Во время тестирования в некоторых случаях возникала ошибка «неверный брекетинг», и методом проб и ошибок я пришел к выводу, что ADODB не может обрабатывать имена листов, содержащие точку, за которой следует пробел . Другими словами:
XYZ S.à r.l. -12.2017 -> error
XYZ S.à r.l -12.2017 -> works ok (dot before space is deleted)
XYZ S.à r.l.-12.2017 -> works ok (space after dot is deleted)
Конечно, в запросе имя листа сопровождается обратными чертами: -)
Ошибка msg -2147217900 есть; Неверный брекетинг имени 'XYZ S.à r.l. -12.2017 $ A9: H49 '
Мой вопрос: знаете ли вы какие-либо другие подобные проблемы, которые я должен отслеживать? Это где-нибудь задокументировано?
обновление: сгенерированный оператор SQL (но, опять же, он был успешно протестирован в ряде других рабочих книг, и мне удалось заставить его работать, переименовав 1-й из 2-х задействованных рабочих листов, как описано выше)
select cstr(pr.reference), pr.[name],null, pr.item, pr.country, pr.currency, pr.maturity, pr.sector
from [Excel 12.0 Xml;HDR=Yes;Database=\\mydomain.com\someLongPath\XYZ S.à r.l. - 12.2017 - reviewed - MACRO TESTING.xlsx].`XYZ S.à r.l. -12.2017$A9:H49` pr
where cstr(pr.reference) not in (select cur.reference from [Excel 12.0 Xml;HDR=Yes;Database=\\mydomain.com\someLongPath\KB Sarl - 01.2018 to 03.2018 - MACRO TESTING.xlsx].`TB - 03.2018$A9:H51`cur )
and pr.item is not null
Этот запрос получает данные из предыдущего списка, ссылка которого отсутствует в текущем списке. Предыдущие и текущие списки обычно находятся в разных книгах.