Denna artikeln behandlar problemet för VB:
http://support.microsoft.com/support/kb/articles/Q194/1/24.ASP
När man laddar upp en Excelfil å låter ADODB titta på den så låter den de första åtta raderna avgöra vilken datatyp kolumnen skall få. Om ett värde inte stämmer överens med datatypen returneras NULL - utan någon som helst kommentar... :/
Om man vill att ADODB skall titta lite längre ned i kolumnen innan den bestämmer sig kan man ändra detta i reg. nyckeln: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Excel
Default är 8 rader som sagt...
Slutligen kan man inte använda "formatera celler" för att komma åt detta problem. Metadatan bevaras iallafall. Alla fält måste skrivas om, eller uppdateras med hjälp av F2 + Enter.
MEN - jag har ett problem som kvarstår... Vill någon hjälpa mig med syntaxen för följande fast i VB-script. Det är främst argumenten IMEX=1 och HDR=YES jag vill skicka... men genom vilket objekt?
Dim Db As Database
Dim Rs As Recordset
Private Sub Command1_Click()
Set Rs = Db.OpenRecordset("Sheet1$")
'This will print the spreadsheet Text values as Nulls.
Do While Not Rs.EOF
Debug.Print Rs(0)
Rs.MoveNext
Loop
End Sub
Private Sub Form_Load()
'HDR refers to the Excel header row.
Set Db = OpenDatabase("C:\Temp\Book1.xls", _
False, True, "Excel 8.0; HDR=YES; IMEX=1")
End Sub
Private Sub Form_Unload(Cancel As Integer)
Db.Close
Set Db = Nothing
End Sub
Tacksamt...