Avatar billede olberd Nybegynder
22. maj 2001 - 23:50 Der er 6 kommentarer og
1 løsning

Hent navnene på alle arkene i en Excel mappe

Titlen siger næsten alt.. :-)

Jeg har en excel fil balance.xls jeg skal have hentet navnene på arkene ud af filen.
Selvfølgelig ved brug af ODBC (faktisk DSN-less men det er jo ligemeget) forbindelse.
Det vil altså sige ved hjælp af ADO.

Man kan hente alle tabellernes navne ud af en database, så må man også kunne alle arkenes navne ud fra et regneark.

Problemet er bare at jeg ikke kan få det til at virke!

Nogen der kan greje den???
Avatar billede smurfen Nybegynder
23. maj 2001 - 00:07 #1
Hvad får du af fejl når du eksekverer din side?
Avatar billede mwittrock Nybegynder
23. maj 2001 - 08:06 #2
Nedenstående kode udskriver navnene på samtlige ark i din Excel fil:

Dim objExcel, objWorkBook, objWorkSheet

Set objExcel = CreateObject(\"Excel.Application\")
Set objWorkBook = objExcel.Workbooks.Open(\"sti\\til\\balance.xls\")

For Each objWorkSheet In objWorkBook.Worksheets
  Response.Write(objWorkSheet.Name & \"<br>\")
Next

objExcel.Quit

Fungerer naturligvis kun på en maskine, hvor Excel objekterne er tilstede, dvs. hvor Excel er installeret.
Avatar billede smurfen Nybegynder
23. maj 2001 - 09:04 #3
Det er jo løgn morten.
Avatar billede olberd Nybegynder
25. maj 2001 - 23:43 #4
Det er meget fint...

Jeg siger også tak for svaret, men nu var det altså vha. ODBC jeg ville hente navnene og det der er ikke ODBC. :-(

Nogen der har et forslag med ODBC??
Avatar billede olberd Nybegynder
26. maj 2001 - 01:41 #5
Ved nærmere eftertanke så skrev jeg jo faktisk ADO. og eksemplet du har givet er jo ADO (hmm)

Jeg venter lige og ser hvad der sker :-)
Avatar billede mwittrock Nybegynder
26. maj 2001 - 02:17 #6
OK, så får du noget kode der bruger ODBC :-)

Dim objExcelConn, objTableRS

Const adSchemaTables = 20

Set objExcelConn = CreateObject(\"ADODB.Connection\")
objExcelConn.Open \"din_excel_dsn\"

Set objTableRS = objExcelConn.OpenSchema(adSchemaTables)

While Not objTableRS.EOF
  Response.Write(objTableRS(\"TABLE_NAME\") & \"<br>\")
  objTableRS.MoveNext
Wend

objTableRS.Close
objExcelConn.Close

Set objTableRS = Nothing
Set objExcelConn = Nothing

Bemærk at ovenstående for nemheds skyld bruger en DSN, men det er nemt for dig at indsætte din egen DSN-less kode.

De navne som Excel returnerer, slutter på $, og hvis der er mellemrum i arkets navn, er hele navnet (incl. $) indeholdt i \'. Det kunne altså f.eks. se sådan her ud:

test$
\'mere test$\'
\'sidste test$\'
Avatar billede olberd Nybegynder
28. maj 2001 - 14:09 #7
Mange tak for svaret...

Det er irriterende nok præcis sådan jeg selv har forsøgt mig.. Det virker bare ikke!

Men det er formentligt bare noget der er galt med min PC..
Den siger også (når jeg prøver at hente almindelige oplysninger ud) at en anden har arket åbnet med udelt adgang.. Selvom det ikke er tilfældet og alle rettigheder er i orden!

Nok om det. Du får dine points!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester