ListBox & Carica dati

di il
11 risposte

ListBox & Carica dati

Ho un documento Word in cui ho inserito un form con un controllo ListBox che prende i dati da un foglio Excel.
Con la seguente routine funziona perfettamente: tuttavia il PROBLEMA è che non mi inserisce il titolo delle colonne del file EXCEL.
Come posso fare in modo che nella prima riga del listbox compaiano i titoli delle colonne?

Sub CaricaDatiInListBox
On Error Resume Next
  Dim sSQLQry As String
 Dim ReturnArray
 Dim Conn As New ADODB.Connection
 Dim mrs As New ADODB.Recordset
 Dim DBPath As String, sconnect As String
 Dim iCount As Integer
    iCount = 1
    ListBox1.ColumnCount = 9
    ListBox1.ColumnWidths = "50,50,50,50,50,50,50,50"
    ListBox1.ColumnHeads = True
DBPath = "C:\Dati.xls"
    sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
 Conn.Open sconnect
   sSQLSting = "SELECT * From [DATA$]"
     mrs.Open sSQLSting, Conn
       For Each x In mrs.Fields
          Do Until mrs.EOF
              ListBox1.AddItem
                   ListBox1.List(iCount - 1, 0) = mrs.Fields("MESI").Value
                   ListBox1.List(iCount - 1, 1) = mrs.Fields("SETTORI").Value
                   ListBox1.List(iCount - 1, 2) = mrs.Fields("QUANTITA'").Value
                   ListBox1.List(iCount - 1, 3) = mrs.Fields("NAZIONI").Value                   
               iCount = iCount + 1
             mrs.MoveNext
          Loop
       Next
End sub

11 Risposte

  • Re: ListBox & Carica dati

    Se usi

    ListBox1.ColumnHeads = True

    allora devi usare la proprietà RowSource e non il ciclo con le AddItem.

    Se vuoi usare le AddItem allora la ColumnHeads deve essere False e i nomi delle colonne li aggiungi nella prima riga con un AddItem

    In ogni caso il ciclo For Each x toglilo perché messo in quel modo non ha senso

  • Re: ListBox & Carica dati

    Ho provato a seguire il tuo suggerimento correggendo il codice secondo le tue indicazioni, ma non funziona.

    On Error Resume Next
     Dim sSQLQry As String
    Dim ReturnArray
    Dim Conn As New ADODB.Connection
    Dim mrs As New ADODB.Recordset
    Dim DBPath As String, sconnect As String
    Dim iCount As Integer
       iCount = 1
       ListBox1.ColumnCount = 9
       ListBox1.ColumnWidths = "50,50,50,50,50,50,50,50"
       ListBox1.ColumnHeads = false
    DBPath = "C:\Dati.xls"
          sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
    Conn.Open sconnect
      ListBox1.RowSource = "C:\Dati.xls"
           sSQLSting = "SELECT * From [Dati$]"
  • Re: ListBox & Carica dati

    17/05/2024 - coccobello ha scritto:


    Ho provato a seguire il tuo suggerimento correggendo il codice secondo le tue indicazioni, ma non funziona.

      ListBox1.RowSource = "C:\Dati.xls"

    Secondo te, l'assegnazione che hai fatto qui sopra può essere ammissibile?

  • Re: ListBox & Carica dati

    Ho provato anche così, ma il risultato è lo stesso:

    Private Sub UserForm_Activate()
    On Error Resume Next
     Dim sSQLQry As String
    Dim ReturnArray
    Dim Conn As New ADODB.Connection
    Dim mrs As New ADODB.Recordset
    Dim DBPath As String, sconnect As String
    Dim iCount As Integer
       iCount = 1
       ListBox1.ColumnCount = 9
       ListBox1.ColumnWidths = "50,50,50,50,50,50,50,50"
       ListBox1.ColumnHeads = False
      ListBox1.RowSource = "C:\Data.xls!Dati$A1:C:10"
      End Sub
  • Re: ListBox & Carica dati

    17/05/2024 - coccobello ha scritto:


    Ho provato anche così, ma il risultato è lo stesso:

    Se vai totalmente a caso, senza leggere la documentazione (tipo questa), sono solo due le certezze: non funzionerà mai, e farai tentativi infiniti (perché tali sono le combinazioni, quando dettate dalla fantasia).

  • Re: ListBox & Carica dati


    Se vai totalmente a caso, senza leggere la documentazione (tipo questa), sono solo due le certezze: non funzionerà mai, e farai tentativi infiniti (perché tali sono le combinazioni, quando dettate dalla fantasia).

    Forse non sono stato abbastanza chiaro:

    Il Controllo ListBox si trova all'interno di un Form che ho inserito in un documento di Word VBA.

    Esso prende i dati da un file Excel (non c'entra niente Access)

  • Re: ListBox & Carica dati

    Prova a non usare RowSource

    ListBox1.ColumnHeads = False

    usa una AddItem per inserire una riga con i nomi dei campi seguita dal ciclo di lettura dei dati.

  • Re: ListBox & Carica dati

    17/05/2024 - coccobello ha scritto:


    Il Controllo ListBox si trova all'interno di un Form che ho inserito in un documento di Word VBA.

    Esso prende i dati da un file Excel (non c'entra niente Access)

    Le proprietà dei controlli di Office non dovrebbero essere troppo difformi tra applicazione e applicazione (qualcosa me lo aspetto, essendo rami di modelli diversi, ma non sarà qualcosa come il giorno e la notte).

    In ogni caso, finché non riporti l'errore che ottieni, o il comportamento che si verifica diverso da quello che ti aspetti, almeno io fatico a dare un suggerimento senza sobbarcarmi l'onere di provare a fare la cosa che stai facendo tu.

    Riporta quante più informazioni possibili per facilitare chi risponde a capire.

  • Re: ListBox & Carica dati

    Ho seguito il tuo consiglio.

    grazie.

  • Re: ListBox & Carica dati

    A chi stai rispondendo?

    A quale consiglio ti riferisci?

    Hai risolto?

    Con quale codice?

  • Re: ListBox & Carica dati

    ListBox1.ColumnHeads = False

    Ho deciso di usare una AddItem per inserire una riga con i nomi dei campi 

    poi inserisco il ciclo di lettura dei dati.

Devi accedere o registrarti per scrivere nel forum
11 risposte