Можно ли использовать соединение запроса excel в качестве источника adodb.connection
Добрый день всем,
Я импортировал данные в свою модель данных excel и смог импортировать их обратно на лист с помощью :
Application.CutCopyMode = False Application.DisplayAlerts = False Dim tbl As ListObject Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets.Add connectionName = fieldName & "sConnection" With ws.ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook.Connections("Query - TRENDS_GroupData"), Destination:=Range("$A$1")).TableObject .WorkbookConnection.OLEDBConnection.CommandText = Array( _ "Evaluate" & Chr(13) & "" & Chr(10) & "Calculatetable" & Chr(13) & "" & Chr(10) & "(DISTINCT(UNION(" & Chr(13) & "" & Chr(10) & "Distinct(Trends_MyCoData[" & fieldName & "])," & Chr(13) & "" & Chr(10) & "Distinct(Trends_GroupData[" & fieldName & "])" & Chr(13) & "" & Chr(10) & ")))") .WorkbookConnection.OLEDBConnection.CommandType = xlCmdDAX .RowNumbers = False .PreserveFormatting = True .RefreshStyle = 1 .AdjustColumnWidth = True .ListObject.DisplayName = fieldName End With Set tbl = ActiveSheet.ListObjects(1) tbl.RefreshВ другой книге я использую ADODB.Connection для запроса таблицы на листе с использованием таблицы :
Public Function CreateSQLConnection() As Object '---Connecting to the Data Source--- Set CreateSQLConnection = CreateObject("ADODB.Connection") With CreateSQLConnection .Provider = "Microsoft.Mashup.OleDb.1" .ConnectionString = "Data Source=ActiveWorkbook.Connections(""Query - TRENDS_GroupData"");" & _ "Extended Properties=""Excel 12.0 Xml;HDR=NO"";" .Open End With End FunctionЭти опции отлично работали, однако теперь я столкнулся с гораздо большим набором данных и задавался вопросом, Можно ли использовать соединение в качестве источника для ADODB.Connection, поскольку до сих пор я не добился успеха.
Ближе всего я подошел к тому, чтобы заставить его работать, выскакивает следующее сообщение :
- Не могу обновить. База данных или объект доступны только для чтения."
В общем, моя конечная цель-иметь возможность запрашивать модель данных с помощью SQL, и если есть другой способ сделать это вместо вышеперечисленного, я был бы признателен за руководство.
Любые мысли будут высоко оценены.
Что я уже пробовал:
Изменение режима чтения или adRead
Смена поставщика двигателя или коллажей
Несколько перестановок различных настроек.
CHill60
Когда вы говорите "гораздо больший набор данных", вы превысили ограничения на размеры объектов Excel?
Scs11Dr1v3
Доброе утро CHILL60,
Набор данных значительно превышает 1 000 000 строк данных, что превышает ограничения рабочего листа Excel, однако он все еще находится в пределах возможностей Excels datamodel.
CHill60
Максимальный размер зависит от версии и платформы, ни одна из которых не упоминается, но если вы уверены...
Если бы это был я, я бы экспериментировал, чтобы найти порог, который нарушает модель, или посмотреть, есть ли альтернативный подход к получению MI.
Scs11Dr1v3
Мои извинения, я не подумал упомянуть об этом.
Я работаю в Excel Professional Plus 2016 Версия 1804 сборка 9226.2156
Ничего не ломается и не работает, оба вышеперечисленных метода отлично работают, я бы просто хотел их объединить.
Моя конечная цель состоит в том, чтобы иметь возможность запрашивать модель данных с помощью операторов SQL вместо запроса рабочих листов.
Спасибо Вам за обратную связь
CHill60
Это у меня не тот конец палки - извините. Вот почему этот разговор находится в комментариях а не в решении проблемы :-)