Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    71

    [vb2010 WInForm]Butto per aprire e salvare in file excel

    Salve, sono ancora qua per chiedere un "help me"
    Chiedo: c'è la possibilità all'interno di un form di avere un button "Apri" che mi apra un determinato file excel, e un button Salva", che mi salvi i dati che ho inserito nel form, i un determinato file excel?

    Sto cercando su google, ma ho trovato codice riferito a word, per excel ma per le versioni precedenti, e codice che non funzionava, quindi ora riparto da zero, e chiedo direttamente lumi a voi.

    Grazie ragazzi

    Saluti

  2. #2
    qual'è il codice che non ti funziona, puoi postarlo?

    hai aggiunto il riferimento di nome Microsoft.Office.Interop.Excel da proprietà del progetto???

    intento ti riposto il mio che uso per aprire un documento excel esistente:

    nella classe del form dichiara questa variabile che punterà al file di excel (puoi anche dichiararla pubblica se varrà codivisa tra più forms)

    codice:
    Dim FileExcel As  New Microsoft.Office.Interop.Excel.Application
    nell'evento Click del bottone "Apri" inserisci questo codice per l'apertura del file:

    codice:
          'specifica il percorso del file di excel da aprire (deve essere quello guisto)
          Dim PercorsoFile As String="D:\Users\Mik\Documents\File Excel.xls"
    
          'rende visibile il file da aprire
          FileExcel.Visible = True
    
          ' Apre il file
          FileExcel.Workbooks.Open(PercorsoFile)
    Michele

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    71
    Guarda te lo posterei volentieri, ma ne ho provati talmente tanti e con varie modifiche , che sinceramente ho cancellato tutto e adesso ho inserito il tuo, che sinceramente è più pulito rispetto a tutti gli altri codici che provavo, ho inserito il percorso corretto e il bottone mi funziona correttamente senza darmi problemi.
    Per quanto riguarda il bottoe "Salva", sinceramente non ho nulla in mano quindi non potrei postare nulla. Mi sapresti dare una dritta?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    71
    il botton "Salva" mi dovrebbe salvare i risultati di vari form, praticamente in vari form ci sono checkbox, radiobotton, richtext, tutti i form sono collegati tramite me.hide() form2.show(), etc, e i dati salvati devono andare all'interno di un file excel, e ogni dato deve andare dentro in una cella determinata.
    Per "eseguire" la relazioe tra dato-cella devo implementare direttamente nel Sub relativo? oppure posso dirgli alla fine "salva tutti i risultati" (però in codice)?

  5. #5
    mi sabra averti risposto in qualche altro post...

    comunque si..... puoi farlo direttamente nell'utimo form!


    esempio lettura e memoriazzazione valori in celle...
    premesso che il foglio sià attivo all'apertura.. (altrimento dovrai attivarlo tramite codice)
    codice:
    With FileExcel
        ' scrive nella cella (riga 1, Colonna1) il valore della TexBox1 del form 1
        .Cells(1, 1).value = Form1.TextBox1.Text
        
        'scrive nella cella (riga 2, colonna 1) ill valore della TextBox3 del form 3
        .Cells(2, 1).value = Form3.TextBox3.Text
    
        ......................
        ......................
    
    
       'Salva il File
        .SaveWorkspace(PercorsoFile)  ' PercosoFile deve contenere il percorso completo del file Excel aperto
        
       
        'Chiude il File Excel
        .Quit()
         
        'Scarica la variabile
        .Dispose
    End With
    ' e così via per tutti i valori che intendi riportare...


    PS. visto che ci troviamo in argomento, ne approfitto di una situazione ancora non trattata...:
    percaso hai notato che pur chiudendo il file excel, il programma resta aperto in background e in memoria ...prova a guardare in Task Manager di windows, alla pagina "Processi", vedi anche tu file aperti "Excel.exe" tanti quante volte è stato aperto con VB2010 ????
    Michele

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    71
    Originariamente inviato da michelecali
    mi sabra averti risposto in qualche altro post...

    comunque si..... puoi farlo direttamente nell'utimo form!


    esempio lettura e memoriazzazione valori in celle...
    premesso che il foglio sià attivo all'apertura.. (altrimento dovrai attivarlo tramite codice)
    codice:
    With FileExcel
        ' scrive nella cella (riga 1, Colonna1) il valore della TexBox1 del form 1
        .Cells(1, 1).value = Form1.TextBox1.Text
        
        'scrive nella cella (riga 2, colonna 1) ill valore della TextBox3 del form 3
        .Cells(2, 1).value = Form3.TextBox3.Text
    
        ......................
        ......................
    
    
       'Salva il File
        .SaveWorkspace(PercorsoFile)  ' PercosoFile deve contenere il percorso completo del file Excel aperto
        
       
        'Chiude il File Excel
        .Quit()
         
        'Scarica la variabile
        .Dispose
    End With
    ' e così via per tutti i valori che intendi riportare...


    PS. visto che ci troviamo in argomento, ne approfitto di una situazione ancora non trattata...:
    percaso hai notato che pur chiudendo il file excel, il programma resta aperto in background e in memoria ...prova a guardare in Task Manager di windows, alla pagina "Processi", vedi anche tu file aperti "Excel.exe" tanti quante volte è stato aperto con VB2010 ????
    Per il codice ti ringrazio e ora inizio a metterlo per ogni valore che intendo riportare.
    Ma volevo fare una domanda..il codice mi permette di inserire il mio valore nella cella determinata ok, ma facciamo un esempio..nella colonna A devo inserire tutti Cognomi, valore che l'utente dà dal form in vb.net, quindi non posso dirgli "inserisci il valore del TextBox1 (per esempio) nella cella 1,1 , perchè tutte le volte che mi inserire il valore me lo sostituisce in continuazione, come potrei fare per "farli inserire uno sotto l'altro?"

    Per il backround non me ne sono accorto...ora provo

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    71
    Ho implementato la prima parte (del form1):
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            With FileExcel
                ' scrive nella cella (riga 1, Colonna1) il valore della TexBox1 del form 1
                .Cells(2, 2).value = Form1.TextBox1.Text
                .Cells(2, 3).value = Form1.TextBox1.Text
                .Cells(2, 4).value = Form1.DateTimePicker1.Value
    
                'scrive nella cella (riga 2, colonna 1) ill valore della TextBox3 del form 3
    
    
                'Salva il File
                .SaveWorkspace("C:\DB Entrepreneurship.xls")  ' PercosoFile deve contenere il percorso completo del file Excel aperto
    
    
                'Chiude il File Excel
                .Quit()
    
                'Scarica la variabile
                .Dispose()
            End With
        End Sub
    in With FileExcel mi dice appena dopo la compilazione: 'FileExcel' non dichiarato. Non è accessibile a causa del livello di protezione.

    ps: Ho inserito all'inizio di quel form: Imports Microsoft.Office.Interop

  8. #8
    Originariamente inviato da pagin
    Ho implementato la prima parte (del form1):


    in With FileExcel mi dice appena dopo la compilazione: 'FileExcel' non dichiarato. Non è accessibile a causa del livello di protezione.

    ps: Ho inserito all'inizio di quel form: Imports Microsoft.Office.Interop

    rendi pubblica la dichiarazione della variabile del file excel nella classe del form1 e inserisci in testa alla classe l'import per excel...
    esattamente così:
    codice:
    Imports Microsoft.Office.Interop.Excel
    
    
    Public Class Form1
    
        Public objXls As New Microsoft.Office.Interop.Excel.Application
    poi..per conoscere la prima riga vuota nel foglio, o istanzi un ciclo per riga fino a che trova la cella vuota oppure ti passo un codice che uso io, da inserire subito dopo l'apertura del file excel:

    codice:
                    .Cells(.Rows.Count, 1).End(XlDirection.xlUp).Select() ' io ho messo 1 come colonna da valutare..tu metterai il numero di colonna dove hai i cognomi...
                    PrimaRigaVuota = .ActiveCell.Row + 1 ' PrimaRigaVuota contiene il numero della prima riga utile per nuovo inserimento


    La variabile PrimaRigaVuota và dichiarata come pubblica nella classe del primo Form (oppure meglio se in un Modulo di classe), così puoi leggerla ovunque..

    Public PrimaRigaVuota As Long


    quindi per fare riferimento alla 1° cella vuota (colonna 1) ,per esempio mettari così:
    codice:
    .Cells(PrimaRigaVuota,1).Value=.........
    Michele

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    71
    Intanto Grazie immensamente,
    in questi giorni (scusa il ritardo della risposta), ho sistemato il codice, ma ho due domande:

    1) il codice PrimaRigaVuota:

    codice:
     .Cells(.Rows.Count, 1).End(XlDirection.xlUp).Select() ' io ho messo 1 come colonna da valutare..tu metterai il numero di colonna dove hai i cognomi...
                    PrimaRigaVuota = .ActiveCell.Row + 1 ' PrimaRigaVuota contiene il numero della prima riga utile per nuovo inserimento
    mi conviene inserirlo nel bottone di apertura del mio file excel nel form1 oppure è uguale se lo inserisco in un nuovo bottone "Apri e Salva" nel form11? (ho 11 form tutti collegati)

    2) La dichiarazione di:
    codice:
    Public PrimaRigaVuota As Long
    la debbo fare nel form1? se si la devo inserire in:
    codice:
    Public Class Form1
        Dim FileExcel As New Microsoft.Office.Interop.Excel.Application

  10. #10
    1.se dichiari pubblica una variabile nella classe del Form1, questa sarà visibile e accessibile da qualsiasi form differente, antecedendo al nome , il nome del form ove è stata dichiarata..es PrimaRigaVuota sarà accessibile così:
    codice:
    Form1.PrimaRigaVuota=.........
    2.se hai creato un bottone per aprire e salvare tutto nell'ultimo form, puoi inserire tutto il codice nella classe di quel form, e di conseguenza anche tutte le dichiarazioni delle varibili... Così ti eviti di specificare il namespaces della classe differente di form (oppure tagli la testa al toro creandoti un modulo per la dichiarazzione delle variabili pubbliche)..

    Ciao
    Michele

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.