Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124

    [VB6]Importare dati da Excel e poi ordinare!

    Salve ragazzi,
    cercando su internet ho trovato un progetto su come importare dei dati Excel in VB6. Diciamo che sono riuscito, al momento, a risolvere il problema dell'importazione, ma dopo di sicuro dovrò fare alcuni aggiustamenti. Comunque tornando al mio problema...vorrei ordinare in modo decrescente i dati che sono caricati, ma tutto in base al prezzo! Come posso fare?


    Ecco il codice:

    codice:
    Option Explicit
    Dim FileExcel As Workbook
    Dim FoglioExcel As Worksheet
    
    Dim nome1 As Range
    Dim prezzo1 As Range
    Dim pagato1 As Range
    Dim nome2 As Range
    Dim prezzo2 As Range
    Dim pagato2 As Range
    Dim nome3 As Range
    Dim prezzo3 As Range
    Dim pagato3 As Range
    
    Dim NomeZona As Name
    
    
    
    Private Sub Form_Load()
    If VerifyFile(App.Path & "\Fatture1.xls") Then
    Set FileExcel = Excel.Workbooks.Open(App.Path & "\Fatture1.xls")
        Else
            MsgBox "Impossibile eseguire il programma" & _
            vbCrLf & "Il file " & App.Path & "\Fatture1.xls" & " non è stato trovato.", vbOKOnly
            End
        End If
        
        On Error GoTo errore
    Set FoglioExcel = FileExcel.Worksheets("Foglio1")
    Set nome1 = FoglioExcel.Cells(2, 1)
    Set prezzo1 = FoglioExcel.Cells(2, 2)
    Set pagato1 = FoglioExcel.Cells(2, 3)
    Set nome2 = FoglioExcel.Cells(3, 1)
    Set prezzo2 = FoglioExcel.Cells(3, 2)
    Set pagato2 = FoglioExcel.Cells(3, 3)
    Set nome3 = FoglioExcel.Cells(4, 1)
    Set prezzo3 = FoglioExcel.Cells(4, 2)
    Set pagato3 = FoglioExcel.Cells(4, 3)
    
    Text1 = nome1.Value
    Text2 = prezzo1.Value
    Text3 = pagato1.Value
    Text4 = nome2.Value
    Text5 = prezzo2.Value
    Text6 = pagato2.Value
    Text7 = nome3.Value
    Text8 = prezzo3.Value
    Text9 = pagato3.Value
    
    
    Set nome1 = Nothing
    Set prezzo1 = Nothing
    Set pagato1 = Nothing
    Set nome2 = Nothing
    Set prezzo2 = Nothing
    Set pagato2 = Nothing
    Set nome3 = Nothing
    Set prezzo3 = Nothing
    Set pagato3 = Nothing
    Set FoglioExcel = Nothing
    
    
    Exit Sub
    
    errore:
    MsgBox "Errore " & Err.Number & vbCrLf & Err.Description
    Set nome1 = Nothing
    Set prezzo1 = Nothing
    Set pagato1 = Nothing
    Set nome2 = Nothing
    Set prezzo2 = Nothing
    Set pagato2 = Nothing
    Set nome3 = Nothing
    Set prezzo3 = Nothing
    Set pagato3 = Nothing
    Set FoglioExcel = Nothing
    End Sub
    
    
    Private Sub cmdOrdina_Click()
    
    End Sub
    
    Public Function VerifyFile(FileName As String)
    On Error Resume Next
    Open FileName For Input As #1
    If Err Then
    VerifyFile = False
    Exit Function
    End If
    Close #1
    VerifyFile = True
    End Function
    
    Private Sub mnuStampa_Click()
    cmdOrdina.Visible = False
    Me.PrintForm
    cmdOrdina.Visible = True
    
    End Sub

    Il codice dell'ordinamento dovrei inserirlo nel CommandButton: "cmdOrdina"...e poi quando ordino in base al prezzo, ovviamente anke la variabile nome e pagato devono spostarsi.

    Ad esempio:

    Text1 = Fattura 1 del 22/11/2011
    Text2 = 35,3€
    Text3 = Si
    Text4 = Fattura 3 del 02/12/2011
    Text5 = 50,05€
    Text6 = Si
    Text7 = Fattura 2 del 29/11/2011
    Text8 = 37,7€
    Text9 = Si

    Grazie a tutti!

  2. #2
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124
    In allegato c'è l'immagine della form, momentanea, con alcuni valori. I valori sono diversi da quelli indicati nel post precedente, ma il concetto è lo stesso, cioè ordinare in base al prezzo!
    Immagini allegate Immagini allegate

  3. #3
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124
    Nessun aiuto?

  4. #4
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124
    Ragazzi nessuno che mi può aiutare a risolvere questo ordinamento?


    Thanks

  5. #5
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124
    Se notate nella prima immagine i dati caricati non sono ordinati...invece nella seconda immagine(vedi sotto)...i dati sono ordinati. Io ho ordinato manualmente, ma ovviamente io voglio che grazie al pulsante "cmdOrdina" lo faccio in modo automatico.
    Immagini allegate Immagini allegate

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    E' più semplice se li ordini in Excel PRIMA di importarli, così eviti di compilcarti la vita.
    Se vuoi ordinare i dati DOPO averli importati devi costruirti un algoritmo 'ad hoc' ma mi pare una perdita di tempo dato che con Excel è più semplice.

  7. #7
    Segui questi passi:
    1) crea una macro in excel che ti ordina i dati.
    2) visualizza il codice che excel ha creato mentre registrava la macro (usa ALT+F11 per aprire l'editor)
    3) una volta che hai capito come funziona la cosa,come gestisce la selezione ecc. ecc. copia il tutto nel tuo listato VB6
    Non aspettarti che con un crudo copia e incolla possa funzionare,dovrai fare piccoli aggiustamenti ,studiarci un po'.... goditi la sfida, e' la strada giusta per imparare.
    Se non ce la fai in un paio d'ore,torna a chiedere,ma non accettare una sconfitta cosi' a cuor leggero.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    2
    ordinare in excel è sicuramente più semplice, tuttavia se devi proprio usare il command button io userei un algoritmo notevole per ordinamento a vettori paralleli...

    perchè è chiaro che se tu ordini i prezzi devi anche cambiare nel corretto ordine anche le altre textbox... pertanto:

    definisci tre array e gli carichi dentro i dati:

    dim vPrezzo() as double
    dim vNome() as string
    dim vPagato() as string

    ora hai questi tre array vuoti che devi riempire. per fare questo, dato che sono vettori paralleli (e per paralleli significa che vi è una correlazione tra l'elemento vPrezzo(N) e gli altri vettori in posizione N), io definirei una variabile che punti SEMPRE alla prima posizione libera degli array:

    dim puntatore as integer

    e la inizializziamo ad 1 perchè la posizione 0 ci servirà in seguito per gli ordinamenti:

    puntatore = 1

    ok, ora carichiamo i dati (definendo una variabile contatore che inizializziamo alla prima riga dove sono contenuti i dati):

    For i = 2 to 4
    vNome(i) = cell(i,1)
    vPrezzo(i) = cell(i,2)
    vPagato(i) = cell(i,3)
    Next i

    Questo codice lo sostituisci ovviamente al tuo


    ora devi ordinare per selezione l'array prezzo e aggiornare gli altri e infine caricare i dati nelle textbox...

    io ti ho dato la struttura, ti faccio sudare un po' sull'ordinamento :P

    su internet ne trovi a miriadi di esempi

  9. #9
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124
    Grazie mille a samsamu per i consigli.

    samsamu hai detto che ci sono tanti esempi? Dove?

    Ho provato a fare una ricerca, ma non riesco a trovare quello che voglio! Di sicuro sbaglio!

  10. #10
    Utente di HTML.it L'avatar di karl93
    Registrato dal
    Nov 2011
    Messaggi
    124
    samsamu gentilmente mi dici dove trovo gli esempi???


    Comunque ho un problema. Tutto il codice inserito precedentemente mi funziona nel progetto di prova, ma se importo la form nel progetto dove sto creando il mio programma mi visualizza errore su:

    codice:
    Dim FileExcel As Workbook
    In foto notate l'errore! Come mai?


    Grazie!
    Immagini allegate Immagini allegate

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.