Gå til innhold

Hente data fra et excel dokument


Anbefalte innlegg

Videoannonse
Annonse

Den beste måten å gjøre dette på er med ADODB. Følgende kode er et eksempel på akuratt det:

 

Private Sub Form_Load()

Dim rs As Object
Dim cnn As Object
Dim myPath As String
Dim fld As Object
Dim fldCat As String

Set rs = CreateObject("ADODB.Recordset")
Set cnn = CreateObject("ADODB.Connection")

myPath = "C:\Test.xls"

cnn.Open "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & myPath & ";ReadOnly=1"
rs.Open "SELECT * FROM [Sheet1$]", cnn

Do While Not rs.EOF
   
   For Each fld In rs.Fields
       fldCat = fldCat & fld
   Next
   
   MsgBox fldCat
   
   fldCat = ""
   rs.MoveNext
Loop

End Sub

Lenke til kommentar

Jeg ville gjort det slik:

'Dim'er excel, workbook og ark som object
Dim xl As Object
Dim book As Object
Dim sheet As Object

'Starter Excel og åpner et regneark
xl = CreateObject("Excel.Application")
xl.Visible = False
book = xl.Workbooks.Open("C:\Test.xls")
sheet = book.ActiveSheet
sheet.Activate()

'Så kan vi hente ut verdier, til f.eks en variabel
Dim strValue as String = sheet.Range(1, 1).Value     'Henter ut data fra A1

'Eller vi kan hente ut den matrise (eller array, om du vil)
Dim iAntRad as Integer = 3      ' Henter inn 3 rader
Dim iAntKol as Integer = 10     ' Henter inn 10 kolonner
Dim aMyArray (iAntRad,iAntKol,) 
aMyArray = sheet.Range(sheet.Cells(1, 1), sheet.Cells(iAntRad + 1, iAntKol + 1)).Value


'Eventuelt hvis du ikke vil bruke sheet.Cells(x,x), kan du bruke Range direkte med celle-referansen.
'Da blir det slik
Dim strValue as String = sheet.Range("A1").Value     'Henter ut data fra A1

'Og Matrise-uthentingen blir
Dim iAntRad as Integer = 3      ' Henter inn 3 rader
Dim iAntKol as Integer = 10     ' Henter inn 10 kolonner
Dim aMyArray (iAntRad,iAntKol,) 
aMyArray = sheet.Range("A1:C10").Value    


'Stenger objektene, viktig!
xl = Nothing
book = Nothing
sheet = Nothing

 

Selvfølgelig kan du også spesifisere hvilket regneark i "workbook'en" som skal åpnes. Istedenfor å skrive "sheet = book.ActiveSheet" kan du enkelt og greit skrive sheet = book.Sheets("NavnPåArk")

 

Fordelen med denne metoden er at man kan styre Excel like mye fra Visual Basic 6.0 / .Net som man kan med makroene man kan skrive/spille inn i Excel. Du kan (nesten) ta makroer og kopiere dem inn i VB-koden din. :)

 

 

Lykke til!

 

 

 

(Dette kan være en morsom sammenblanding av VB6.0, VB.Net og VBA kode. Hvis noe av en usannsynlig grunn ikke skulle fungere, så si i fra)

Lenke til kommentar

Let etter nøkkelen Excel.Application under HKEY_CLASSES_ROOT ved å kjøre regedit.exe i RUN. Hvis du ikke klarer å finne den må du sannsynligvis installere Excel på nytt. Muligens kan du også prøve å registrere EXCEL.EXE, men jeg er dessverre ikke sikker om du også må registere andre filer, og i så fall hvilke. Du får bare prøve deg fram.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...