Gå til innhold

Finne ark i en Excel-workbook


Anbefalte innlegg

Goddag godtfolk!

 

Jeg har en applikasjon som leser inn Excel-filer. Men jeg begynner å bli lei av å måtte hardkode hvilke ark som skal brukes i denne Excel-filen. Er det noen der ute som vet om det går ann å lese inn navnene på arkene ("fanene" nederst), slik at brukeren kan velge hvilket ark som skal brukes?

 

På forhånd takk! :)

Lenke til kommentar
Videoannonse
Annonse

Såfremt dette er i Visual Basic 6.0, kan du jo alltids innlemme en form til dette formålet som, etter åpning av excel-filen, leser inn alle tilgjengelige ark i arbeidsboken og gir brukeren mulighet til å velge mellom dem via en kombiboks (Combobox). Legg til to kommandoknapper med navn cmdChoose og cmdCancel, samt en kombiboks med navn cmbSelect, hvoretter du limer inn følgende kode:

 

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

 

Enum Choice

    Choice_Unchoosed

    Choice_Choosed

    Choice_Canceled

End Enum

 

' Variabel benyttet i utvelgingsprosessen

Private lngFinished As Long

 

Private Sub cmdCancel_Click()

 

    lngFinished = Choice_Canceled

 

End Sub

 

Private Sub cmdChoose_Click()

 

    ' Valget er gjort

    lngFinished = Choice_Choosed

 

End Sub

 

Private Sub Form_Load()

 

    Dim Sheet As Object, Excel As Object, Workbook As Object

   

    ' Lag excel-objektet

    Set Excel = CreateObject("Excel.Application")

   

    ' Last inn excel-dokumentet

    Set Workbook = Excel.Workbooks.Open("C:\Test.xls") ' Kun en testfil jeg benyttet

   

    ' Slett tidligere elementer

    cmbSelect.Clear

   

    ' Finn alle ark inkludert i arbeidsboken

    For Each Sheet In Workbook.Sheets

   

        ' Legg til elementet i kombiboksen

        cmbSelect.AddItem Sheet.Name

       

    Next

   

    ' Dersom kombiboksen av en eller annen merkelig grunn ikke inneholder ark, må vi avbryte

    If cmbSelect.ListCount = 0 Then

   

        ' Avbryt prosedyre

        Exit Sub

       

    End If

   

    ' Marker det første elementet

    cmbSelect.ListIndex = 0

   

    ' Synliggjør form

    Me.Show

   

    ' Vent inntil brukeren har utført valget

    Do Until lngFinished <> Choice_Unchoosed

   

        ' Forhindrer overdrevet CPU-anvendelse

        Sleep 10

   

        ' Utfør hendelser

        DoEvents

   

    Loop

   

    ' Fortsett kun dersom brukeren har valgt et ark

    If lngFinished = Choice_Choosed Then

   

        ' Velg arket brukeren har markert

        Workbook.Sheets(cmbSelect.Text).Activate

       

        ' Eksekver hva enn som må eksekveres

        ' ...

   

        ' Fortell brukeren om resultatet

        MsgBox "Operasjonen ble utført med suksess", vbInformation

   

    End If

   

    ' Vi er så ferdige

    Set Workbook = Nothing

    Set Excel = Nothing

 

End Sub

 

Skulle du derimot ønske å gjøre noe slikt i VBA eller sågar VBScript, burde ikke det være altfor vanskelig å tilpasse koden. Essensen er at man benytter Sheets for å ekstrakte alle ark i en arbeidsbok.

Lenke til kommentar

Og Aadnk redder dagen igjen! Det er helt utrolig, dere! :thumbup:

 

Dette var det jeg trengte:

    ' Finn alle ark inkludert i arbeidsboken

    For Each Sheet In Workbook.Sheets

   

        ' Legg til elementet i kombiboksen

        cmbSelect.AddItem Sheet.Name

       

    Next

 

Resten skal jeg få til. Må bare konvertere det til .Net... ;)

 

Tusen takk! :)

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...