Преодолеть ADO Recordset 64 Ограничение символов для полей - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть некоторые данные aphanumeri c в листе Excel закрытой рабочей книги Excel с именем temp.xlsx. Я создаю запрос ADODB Recordset через SQL из VBA, чтобы включить этот диапазон в мою текущую рабочую книгу.

Проблема в том, что некоторые заголовки столбцов на листе имеют длину более 64 символов. Это приводит к тому, что имена столбцов усекаются до 64 символов, когда я импортирую их в набор записей ADO.

Public Const adCmdText = 1
Public Const adOpenDynamic = 2
Public Const adUseServer = 2
Public Const adOpenStatic = 3
Public Const adUseClient = 3
Public Const adLockBatchOptimistic = 4
Public Const adTypeBinary = 1
Public Const adTypeText = 2

' Dim oStream As Object
' Dim oCmd As Object
Dim oCon As Object
Dim oRS As Object
Dim strSQL As String    
Dim strFilePath As String    

' Set oStream = CreateObject("ADODB.Stream")
' Set oCmd = CreateObject("ADODB.Command")    

' Set xlXML = CreateObject("MSXML2.DOMDocument")
' Set XL = GetObject(, "Excel.Application")
' Set WB = XL.ActiveWorkbook
' xlXML.LoadXML Replace(WB.Sheets("Sheet1").Cells(1, 1).CurrentRegion.value(xlRangeValueMSPersistXML), "rs:name="" ", "rs:name=""") 'xlRangeValueXMLSpreadsheet
' oRS.Open xlXML, CursorType:=adOpenStatic, LockType:=adLockBatchOptimistic

 Set oCon = CreateObject("ADODB.Connection")    
 Set oRS = CreateObject("ADODB.Recordset")

strFilePath = ThisWorkbook.Path & Application.PathSeparator & "temp1.xlsx"        
With oCon        
   .Provider = "Microsoft.Ace.OLEDB.12.0"        
   .Properties("Extended Properties") = "Excel 12.0; HDR=Yes;IMEX=1;"        
   .CursorLocation = adUseClient        
   .Open strFilePath    
End With        

strSQL = "SELECT * FROM [Sheet1$]"    
With oRS        
   .CursorType = adOpenStatic        
   .CursorLocation = adUseClient        
   .LockType = adLockBatchOptimistic        
   .activeconnection = adoCon        
   .Open (strSQL)    
End With
End Sub

Существует ли альтернативный метод, обеспечивающий импорт символов полного имени столбца в набор записей ADO из закрытая книга Excel? Можно ли преодолеть ограничение в 64 символа для полей?

Может ли объект ADO.STREAM выполнять работу, поддерживая имена столбцов? MSXML2.DOMDocument.Load или MSXML2.DOMDocument.LoadXML справятся?

Любая помощь будет наиболее ценной.

...