Moskus Skrevet 16. juni 2005 Del Skrevet 16. juni 2005 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
aadnk Skrevet 16. juni 2005 Del Skrevet 16. juni 2005 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
Moskus Skrevet 16. juni 2005 Forfatter Del Skrevet 16. juni 2005 Og Aadnk redder dagen igjen! Det er helt utrolig, dere! 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå