Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!
Verwijderd
De door Excel geprepareerde RecordSet zal breedte 255 terug geven voor alle text kolommen. Daar heb je niets aan. Wat je wel kan doen is een query op de tabel loslaten:
Je krijgt dan de hoogst aangetroffen text lengte terug, wat overigens niet de maximaal mogelijke text lengte is.
code:
1
2
| SELECT Max( Len( Veld_x) ) FROM MyTable; |
Je krijgt dan de hoogst aangetroffen text lengte terug, wat overigens niet de maximaal mogelijke text lengte is.
Dat kan ik idd het beste proberen. Alleen nu kom ik direct tegen het volgende probleem. Het wordt een universeel programma die dus elk gewenst excel document kan inlezen. Het komt er dus op neer dat ik niet de veldnamen weet. Is er een manier dat ik kan opvragen middels 0, 1, etc.Verwijderd schreef op 01 november 2004 @ 20:20:
De door Excel geprepareerde RecordSet zal breedte 255 terug geven voor alle text kolommen. Daar heb je niets aan. Wat je wel kan doen is een query op de tabel loslaten:
code:
1 2 SELECT Max( Len( Veld_x) ) FROM MyTable;
Je krijgt dan de hoogst aangetroffen text lengte terug, wat overigens niet de maximaal mogelijke text lengte is.
Ik roep nu dus bijvoorbeeld het 3e kolom op dmv:
code:
1
| MsgBox RS(2) |
Alleen als ik in de query zet SELECT Max(Len(2)) FROM Blad1$ dan werkt dit uiteraard niet.
Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!
Ik heb al wat gevonden 
Daarna kan ik van alle velden de query maken!
code:
1
2
3
4
5
6
7
8
9
| txtAantalKolommen.Text = RS.Fields.Count
Dim ColomNaam
ReDim ColomNaam(CInt(txtAantalKolommen.Text))
x = 0
Do While x < CInt(txtAantalKolommen.Text)
ColomNaam(x) = RS.Fields(x).Name
x = x + 1
Loop |
Daarna kan ik van alle velden de query maken!
[ Voor 3% gewijzigd door Polderdijk op 02-11-2004 09:32 ]
Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!
Ik heb nog een probleem. Ik heb met een Excel document gewerkt waarbij het 1e bladnaam niet is veranderd, dus kan je hem gewoon opvragen met SELECT * FROM Blad1$. Echter hebben we ook Excel documenten waarbij standaard het bladnaam is veranderd.
Echter kan je dat telkens wel met de hand aanpassen naar Blad1 maar dat is uiteraard niet echt gewenst.
Is er een optie om alle bladen (sheets) op te vragen?
Echter kan je dat telkens wel met de hand aanpassen naar Blad1 maar dat is uiteraard niet echt gewenst.
Is er een optie om alle bladen (sheets) op te vragen?
Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!
Na een hoop Google werk ben ik op de volgende code gekomen die mij het eerste sheetnaam geeft:
code:
1
2
3
4
5
6
7
8
| Dim objExcel
Dim objWorkBook
Set objExcel = CreateObject("EXCEL.APPLICATION")
Set objWorkBook = objExcel.Workbooks.Open(txtSource.Text)
TableName = objWorkBook.ActiveSheet.Name
objWorkBook.Close True
Set objWorkBook = Nothing
Set objExcel = Nothing |
Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!
Verwijderd
Ik zie dat je code met zgn late binding werkt. Het alternatief is dat je de Excel-klasse-bibliotheek toevoegt als referentie aan je project. Dan heb je syntax checking en kan je beter zien hoe Excel in elkaar steekt.
Je definieert je variabelen dan ook iets anders:
Hierover is vast ook wel wat te google-en. Succes !
Je definieert je variabelen dan ook iets anders:
code:
1
2
3
4
5
| Dim X as Excel.Application Dim W as Excel.Worksheet Set X = new Excel.Application Set W = X.Workbooks.Open (etc etc ) |
Hierover is vast ook wel wat te google-en. Succes !
Bedankt voor het alternatief! Maar deze optie kwam ik idd de hele tijd tegen op Google, alleen als ik hem probeerde, dan pakte hij direct line 1 niet. Dus vandaar dat ik verder bent gegaan met mijn oplossing.Verwijderd schreef op 03 november 2004 @ 20:25:
Ik zie dat je code met zgn late binding werkt. Het alternatief is dat je de Excel-klasse-bibliotheek toevoegt als referentie aan je project. Dan heb je syntax checking en kan je beter zien hoe Excel in elkaar steekt.
Je definieert je variabelen dan ook iets anders:
code:
1 2 3 4 5 Dim X as Excel.Application Dim W as Excel.Worksheet Set X = new Excel.Application Set W = X.Workbooks.Open (etc etc )
Hierover is vast ook wel wat te google-en. Succes !
Moet alleen nog een paar dingen zien te vinden, want als er bijvoorbeeld in een Excel sheet een kolom met 'Kortingspercentage' hebt, en deze zie je in Excel als 30%, dan krijg ik als ik hem inleest 0,3 terug.
Maar opzich is dat niet zo'n groot probleem, alleen je moet er wel rekening mee houden natuurlijk.
Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!
Pagina: 1