[VB6 / Excel] Beschikbare sheets opvragen via VB6

Pagina: 1
Acties:

  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Hoi mensen,

Ik ben bezig via VB6 een Excel-bestand te openen. Gegevens daaruit moeten worden ingelezen. Al het voorgaande heb ik werkende, maar aangezien het Excel-bestand meerdere sheets kan bevatten en nooit zeker is welk sheet moet worden ingelezen, wil ik alle beschikbare sheets toevoegen aan een combobox waaruit de gebruiker zijn keuze kan maken alvorens er uberhaupt iets wordt ingelezen, en dat lukt me nu net NIET.

Ik heb het volgende stukje code:
Visual Basic:
1
2
3
4
5
aantalSheets = objExcel.Sheets.Count
  
For x = 1 To aantalSheets
  frmExcelSheets.cboExcelSheets.AddItem "sheetnaam"
Next x


Ik heb veel voor "sheetnaam" bedacht, waaronder alle opties achter 'objExcel.Sheets.(opties)' geprobeerd, maar niks werkt. Ook op internet kan ik geen voorbeelden vinden.

Weet iemand hoe het WEL moet?

  • Blizard
  • Registratie: September 2001
  • Niet online
Weet niet of je er wat aan hebt, maar deze code heb ik ooit gebruikt in een .NET-progsel

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  Public Function GetSheetNames() As String()

    cnExcel.Open()
    Dim ExcelSheets As DataTable = cnExcel.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, _
 New Object() {Nothing, Nothing, Nothing, "TABLE"})
    cnExcel.Close()

    Dim strSheetNames() As String
    Dim i As Integer = 0

    Try
      For Each objrow As DataRow In ExcelSheets.Rows
        ReDim Preserve strSheetNames(i)
        strSheetNames(i) = DirectCast(ExcelSheets.Rows(i)("TABLE_NAME"), String)
        i += 1
      Next
    Catch ex As Exception
      MessageBox.Show("Er liep iets mis bij het inlezen van de sheetnames")
    End Try

    Return strSheetNames
  End Function


Zie ook m'n topic van een tijdje geleden : http://gathering.tweakers.net/forum/list_messages/867734

[ Voor 9% gewijzigd door Blizard op 26-06-2004 13:39 ]


  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Hmm,

Bovenstaande stukje code omschrijven naar VB6 is iets teveel gevraagd, maar ik vond wel een ander - beduidend korter - stukje via Google:

Visual Basic:
1
2
3
4
5
6
7
Sub FillComboBox()
    Dim ws As Worksheet
    
    For Each ws In ActiveWorkbook.Sheets
        ComboBox1.AddItem ws.Name
    Next
End Sub


Helaas komt ik er nu nog niet uit (nOOb), want over ws As Worksheet zegt ie "Can't find project or library", bovendien moet ik nog het een en ander declareren lijkt me....

Wie kan mij hiermee helpen??

[ Voor 93% gewijzigd door nenne op 26-06-2004 14:35 ]


  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Pfiew,

Ik ben er eindelijk uit. Bovenstaand stukje code werkt uitstekend, ware het niet dat in mijn References een Excel-library aangevinkt stond al MISSING terwijl ik ook een oudere versie had aangevinkt, en dan doet ie 't niet.

Eerst MISSING afvinken dus.

Met dank aan www.mrexcel.com (tip!) en http://www.dbforums.com/archive/index.php/t-996577.html