Bartek
Borczyk
Operator liczb i
słów
Temat: ADO, COPYFROMRECORDSET, GETROWS
Mam coś w ten deseń:
Sub sADO_OLEDBJET()
'JET 4.0
'Excel 8.0
Dim strPołączenie_Treść As String
Dim conPołączenie As ADODB.Connection
Dim rcsTabela As ADODB.Recordset 'cały arkusz [arkusz_nazwa$]
Dim rcsTabela2 As ADODB.Recordset 'zakres nazwany [zakres_nazwa]
Dim rcsTabela3 As ADODB.Recordset 'zwykły zakres [arkusz_nazwa$zakres_adres]
Dim varTablica As Variant
Set conPołączenie = New ADODB.Connection
strPołączenie_Treść = "Provider=Microsoft.Jet.OLEDB.4.0;"
strPołączenie_Treść = strPołączenie_Treść & "Data Source=C:\Documents and Settings\krakoska\Pulpit\ADO Connections Examples\Ex1.xls;"
strPołączenie_Treść = strPołączenie_Treść & "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
'HDR=Yes/No - pierwszy wiersz zawiera nagłówki (niewyświetlany)/ nie zawiera (wyświetlany)
'IMEX=1 - wszystkie kolumny jako tekst
With conPołączenie
.ConnectionString = strPołączenie_Treść
.Open
Set rcsTabela = New ADODB.Recordset
rcsTabela.Open "SELECT * FROM [Arkusz1$];", conPołączenie, adOpenStatic
'Worksheets(2).Range("A1").CopyFromRecordset rcsTabela
varTablica = rcsTabela.GetRows
Worksheets(3).Range("A1:" & Cells(UBound(varTablica, 2) + 1, UBound(varTablica, 1) + 1).Address).Value = varTablica
'Debug.Print Worksheets(3).Range("A1:" & Cells(UBound(varTablica, 2) + 1, UBound(varTablica, 1) + 1).Address).Address
rcsTabela.Close
Set rcsTabela = Nothing
.Close
End With
Set conPołączenie = Nothing
End Sub
A teraz pytanie pierwsze: dlaczego getrows zasysa dane do varianta z transpozycją? W efekcie z tabeli (1518,6) dostaję (6,1518). Ta metoda wpienia mnie ostatnio co nie miara http://www.goldenline.pl/forum/ms-access/1170614/s/1#2....
Druga sprawa: przez copyfromrecordset otrzymuję też jakieś głupoty. Jak ustawię na hdr=no to w pierwszym wierszu czasem mam nazwę nagłówka, innym razem nie mam. Bez imexa czasem data jest datą (ma format daty) a czasem nie jest (ma format liczby).
Czy robię gdzieś głupotę, której nie widzę? Czy może moja referencja jest do bani? Próbowałem Ado od 2.5 do 2.8.