У меня есть файл Excel «test.xlsx», который содержит лист с именем «SheetName», который содержит именованный диапазон с именем «NamedRange».
Я хочу написать скрипт на Visual Basic для импорта этихименованные диапазоны в базу данных SQL.До сих пор я пробовал openrowset, но не могу найти правильный синтаксис для ссылки на именованный диапазон.Пример запроса, который не работает:
USE [Test_DataBase]
GO
SELECT * INTO New
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0; Database=D:\Test.xlsx', NamedRange);
GO
Ошибка из этого: Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)" не содержиттаблица "NamedRange".Таблица либо не существует, либо текущий пользователь не имеет разрешений для этой таблицы.
Однако я могу импортировать весь рабочий лист, используя:
USE [Test_DataBase]
GO
SELECT * INTO New
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0; Database=D:\Test.xlsx', SheetName$);
GO
Я также попытался:
USE [Test_DataBase]
GO
SELECT * INTO New
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0; Database=D:\Test.xlsx', SheetName$NamedRange);
GO
Но это приводит к следующей ошибке: Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)" не содержит таблицу "SheetName $ NamedRange".Таблица либо не существует, либо текущий пользователь не имеет разрешений для этой таблицы.
Итак, можно ли на самом деле использовать openrowset для ссылки на именованные диапазоны?Если нет, то есть ли альтернативный метод, который я мог бы использовать вместо этого?
* Это мой первый вопрос, я надеюсь, что я достаточно ясен и не нарушил никаких правил!
Крейг