Avatar billede stig3 Mester
22. september 2001 - 12:50 Der er 4 kommentarer og
2 løsninger

Skrive til excel

Jeg vil gerne skrive til en excel-fil fra vbscript og jeg ved godt at det har været oppe før, men søgefunktionen har de vist fået ødelagt her på eksperten.

Er der nogen der har lidt kode eksempler ?
Avatar billede eagleeye Praktikant
22. september 2001 - 15:42 #1
Se evt. her:
http://support.microsoft.com/support/kb/articles/Q195/9/51.asp

Her er et andet eks:
You can use either the \"Microsoft Excel ODBC Driver\" or the \"OLE DB Provider for Jet\" to read and update an Excel spreadsheet.
Using the Microsoft Excel ODBC Driver:

Dim oConn As ADODB.Connection
Dim oRs As ADODB.Recordset

\' Create and open a new ADO Connection
Set oConn = New ADODB.Connection
oConn.Open \"Driver={Microsoft Excel Driver (*.xls)};\" & _
\"FIL=excel 8.0;\" & _
\"DefaultDir=C:\\Work;\" & _
\"MaxBufferSize=2048;\" & _
\"PageTimeout=5;\" & _
\"DBQ=C:\\Work\\ADOTest.xls;\"

\' Create the Recordset
Set oRs = New ADODB.Recordset

\' Open the Recordset using a Named Ranged
oRs.Open \"Select * from myRange1\", oConn, _
adOpenStatic, adLockBatchOptimistic, adCmdText

\' Open the Recordset using the Sheet Name
\' oRs.Open \"[Sheet1$]\", oConn, _
adOpenStatic, adLockBatchOptimistic, adCmdTable

\' Open the Recordset using the Sheet Name with row and column area
\' oRs.Open \"Select * from `Sheet1$A2:C4`\", oConn, _
adOpenStatic, adLockBatchOptimistic, adCmdText
Using OLE DB Provider for Jet:
Dim oConn As ADODB.Connection
Dim oCmd As ADODB.Command
Dim oRS As ADODB.Recordset

\' Open a connection to the Excel spreadsheet
Set oConn = New ADODB.Connection
oConn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;\" & _
\"Data Source=Expenses.xls;\" & _
\"Extended Properties=\"\"Excel 8.0;HDR=Yes;\"\";\"

\' Create a command object and set its ActiveConnection
Set oCmd = New ADODB.Command
oCmd.ActiveConnection = oConn

\' This SQL statement selects a cell range in the \"Expenses\" worksheet.
\' oCmd.CommandText = \"SELECT * from `Expenses$A2:C4`\"

\' This SQL statement selects a named cell range defined in the workbook.
oCmd.CommandText = \"SELECT * from `Range1`\"

\' Open a recordset containing the worksheet data.
Set oRS = New ADODB.Recordset
oRS.Open oCmd, , adOpenKeyset, adLockOptimistic

Debug.Print oRS.RecordCount

\' Update last row
oRS.MoveLast
oRS(0).Value = -1
oRS.Update

\' Add a new row
oRS.AddNew
oRS(0).Value = 7
oRS(1).Value = 8
oRS(2).Value = 9
oRS.Update
Debug.Print oRS.RecordCount

\' Clean Up
Set oCmd = Nothing
Set oRS = Nothing
oConn.Close
Set oConn = Nothing

Jeg har fundt det her: http://www.able-consulting.com/ADO_Faq.htm#Q15
Avatar billede eagleeye Praktikant
22. september 2001 - 15:43 #2
Et andet eks, godt uden at skrive.:

I din excel fil skal øverste række indeholde navnet på feltet.

        A                        B
1    Fornavn            Efternavn
2    Anders              Hansen
3    Erik                  Jørgensen

Du skal markere det område som skal kunne læses fra ASP. Det markede område skal så tildeles et navn.
Marker områder A1:B3, gå op i menuen Indsæt -> Navn .. -> Definer… 
Definer et navn eks.vis myRange.

Generelt undgå æøå i feltnavne og det Defineret navn.
-----

Set myConn = Server.CreateObject(\"ADODB.Connection\")
Set rs = Server.CreateObject(\"ADODB.RecordSet\")

\'Connect til Excel via ODBC driver. Angiv fil navnet, her hedder filen fil.xls
\'DriverID=790 betyder Excel97
myConn.Open \"Driver={Microsoft Excel Driver (*.xls)};READONLY=FALSE;DBQ=\"&Server.MapPath(\"fil.xls\")&\";DriverID=790\"

\'Du kan skrive * for at vælge alle felter, eller feltnavne for at vælge nogle udvalgte (Fornavn, Efternavn)
strSQL = \"SELECT * FROM myRange\"

\'Hent data fra excel.
rs.Open strSQL,myConn

\'Flyt til første record
rs.movefirst
\'Udskriv alle record. EOF End of File, BOF Begining of File.
\'Udskriv kun hvis der er noget i excel filen eller indtil alle er udskrevet
while not(rs.EOF OR rs.BOF)
  \'dskriv navn
  Response.Write \"<br>Navn fra Excel filen : \" & rs(\"Fornavn\") & \" \" & rs(\"Efternavn\")
  \'Flyt til næste record
  rs.MoveNext
Wend

rs.Close
myConn.Close
set rs=nothing
set myConn=nothing 
Avatar billede stig3 Mester
22. september 2001 - 17:09 #3
Jeg kan ikke lige gennemskue det, men jeg tror at du har misforstået.

Det jeg gerne vil er at kunne få fat i et excel object for at kunne oprette et nyt excel dokument og skrive til det. Du bruger i dine eksempler excel som datakilde.

Er der ikke noget med at man kan noget i den her retning:
set excelark = createobjct(\"adodb.excel\")

Og så bruge objektet derfra ?
Avatar billede stig3 Mester
22. september 2001 - 17:13 #4
Jeg tror faktisk at jeg har fundet det jeg søgte:
http://www.activeserverpages.dk/iishelp/vbscript/htm/vsfctcreateobject.htm
Avatar billede stig3 Mester
22. september 2001 - 17:14 #5
Du får lidt for dit besvær med tak for hjælpen.
Avatar billede eagleeye Praktikant
22. september 2001 - 17:27 #6
Tak. Ja jeg har vist misforstået det. Jeg troede på du ville bruge en excel-fil i stil med access.

Jeg har fundet dette, jeg ved ikke om det er noget du kan bruge:
http://www.intranetjournal.com/articles/200002/wd_02_25_00b.html
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