Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    361

    vba - passare dati da Access a Excel

    Ciao a tutti

    Ho un db access, e tramite una query ottengo una tabella con i dati di mio interesse.

    Devo però da un form, esportare i dati in un file excel.

    Non ho nessun problema nel leggere i dati.
    Non so però come fare per passarli e scriverli sul file excel.

    mi servirebbe il codice per aprire (se serve) un determinato file excel, scrivere nelle celle e salvare.

    grazie

  2. #2
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    codice:
    docmd.TransferSpreadsheet
    trasferisce i dati di una tabella o di una query in un foglio di lavoro excel.
    S'i fosse foco, arderei 'l mondo

  3. #3
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197

    inserire record da una maschera

    ho realizzato una maschera di ricerca che pesca i dati attraverso una query parametrica
    la maschera è strutturata come segue, ci sono dei textbox per la ricerca e risultati vengono visualizzati in una sottomaschera
    nella sottomaschera ci sono i pulsantini per navigare tra i record(avanti, indietro, primo record, ultimo record, inserisci record)
    se premo quello per aggiungere i record, lui mi mette la nuova riga nella sottomaschera ma poi la riga aggiunta non viene inserita fisicamente nella tabella da dove provengono i dati, come posso consolidare l'inserimento anche nella tabella?!?!
    grazie a tutti

  4. #4
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    azz ho sbagliato a postare, non riesco a cancellare il messaggio, scusate

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    361
    grazie cik,
    MA la funzione che mi hai dato tu non mi permette di selezionare il foglio e sopratutto la/le celle precise...

    O almeno, dall'help non sembra si possa fare

    E' l'unico modo per mandare dei dati in un foglio excel??

  6. #6
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    no, è il più banale.

    In alternativa puoi mettere un foglio di lavoro nella maschera, inserire i dati e salvarlo.

    codice:
    'copia ciao nella cella (riga, colonna) 
    CTL_Activex1.ActiveSheet.Cells(riga, colonna) = "Ciao"
    dopo che hai inserito il foglio di lavoro nella maschera guarda nella guida l'oggetto WorkSheet che trovi tutto quello che ti serve (open, save as,...)
    S'i fosse foco, arderei 'l mondo

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    361
    il fatto che il file excel è un file esistente e ben definito.

    Fino ad ora veniva aggiornato con una serie di operazioni: indagando un po' abbiamo scoperto che le informazioni che contiene e che mensilmente ci vengono inviate provengono da un db access.

    Si è pensato quindi di far passare tali dati direttamente nel file excel.

    non ne ho la più pallida idea, e quindi mi servirebbe conoscere una funzione o simile per fare questo (anche solo il nome che poi lo guardo sull'help)

    La tua ultima, se ho capito bene, sarebbe la compilazione di un foglio excel presente nel form e poi salvarlo, giusto?
    Io invece devo aggiornare un file preciso che si trova in rete!!
    Come posso fare

  8. #8
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    la cosa più stupida che mi viene in mente è:
    lo apri in un foglio di lavoro contenuto in una maschera, lo modifichi e lo salvi. Se non visualizzi il foglio di lavoro (proprietà visible=false, tanto per intenderci) il procedimento è trasparente (non devi nemmeno aprire excel).
    S'i fosse foco, arderei 'l mondo

  9. #9
    Eccoti una procedura in VB da aggiungere ad un modulo VB di Access:
    codice:
    Dim rs As DAO.Recordset
    Dim ex As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    Dim i As Integer
    
    'apre excel
    Set ex = New Excel.Application
    ex.Visible = True    'metti false se non vuoi vedere excel a video
    
    'apre il file xls
    Set wb = ex.Workbooks.Open("miofile.xls")
    
    'seleziona il foglio 1
    Set ws = wb.Worksheets(1)
    
    'apre un recordset con la tabella da esportare
    Set rs = CurrentDb.OpenRecordset("Tabella", DAO.dbOpenDynaset)
    
    'loop sui record
    Do Until rs.EOF
       'aggiorna un contatore
       i = i + 1
    
       'imposta la colonna A e B per la riga = i
       ws.Cells(i, 1) = rs("ID")
       ws.Cells(i, 2) = rs("Descrizione")
    
       'prossimo record
       rs.MoveNext
    Loop
    
    'chiude recordset
    rs.Close
    
    'salva file
    wb.Save
    
    'chiude file
    wb.Close
    
    'esce da excel
    ex.Quit
    
    'cancella variabili oggetto
    Set rs = Nothing
    Set ex = Nothing
    Set wb = Nothing
    Set ws = Nothing
    Nel menu Strumenti/Riferimenti di VBA devi caricare le librerie "Microsoft Excel 10.0 Object Library" e "Microsoft DAO 3.6 Object Library" o analoghe (dipende dalla versione di Office installata).
    Ho usato DAO perchè non sono tanto pratico di ADO 2.x, ma presumo che si possa fare ugualmente! Ciao
    Chi non cerca trova.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    361
    grande tas, propio ciò che mi serviva!!!!

    Lunedì mi metterò a usarlo

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.