Newsgroup: it.comp.appl.access
Titolo: esportare dati in excel e invia a destinatario di posta.

Salve ragazzi,
altro problema, dopo 1 anno che uso il mio database per la gestione
degl'ordini nell'azienda avrei bisogno di aggiungere questa utilissima
funzione, mi aiutereste.
avrei la necessità di esportare i dati da una query in excel e poterlo
inviare in allegato tramite posta elettronica a un destinatario.
i dati di cui avrei bisogno in esportare in excel sono in una query
informazioni.
su un libro di mio possesso ho trovao un esempio che fa a caso mio ma
ho dei problemi, mi dice che è errato, naturalmente questo fa una
parte di cui avrei bisogno solo l'esportazione dei dati in excel.
Sub AutomazioneAccessExcel()
    Dim dbLocale As Database
    Dim snpMovimenti As DAO.Recordset
    Dim wbkNuovo As Excel.Workbook, wksNuovo As Excel.Worksheet
    Dim rngCorrente As Excel.Range
    On Error GoTo Errore_AutomazAccessExcel
    'Apre come recordset di tipo snapshot la tabella Movimenti
    Set dbLocale = CurrentDb()
    Set snpMovimenti = dbLocale.OpenRecordset _
        ("Select * from Informazioni", _
        dbOpenSnapshot)
    'Attiva Excel e apre una nuova cartella di lavoro
    Set appExcel = New Excel.Application
    Set wbkNuovo = appExcel.Workbooks.Add
    Set wksNuovo = wbkNuovo.Worksheets.Add
    'Rende visibile Excel
    appExcel.Visible = True
   'Crea le intestazioni delle colonne
   With wksNuovo
    .Cells(1, 1).Value = "" qui dovrei scrivere le intestazioni delle
celle
    .Cells(1, 2).Value = ""
    .Cells(1, 3).Value = ""
   End With
   'Crea nel nuovo foglio di lavoro un intervallo
   'chiamato rngCorrente che va dalla cella A2 alla
   'cella Cx dove x è il numero dei record presenti
   'nel recordset
   Set rngCorrente = wksNuovo.Range(wksNuovo.Cells(2, 1), _
    wksNuovo.Cells(2 + snpMovimenti.RecordCount, 3))
   'Copia i valori del recordset nell'intervallo
   rngCorrente.CopyFromRecordset snpMovimenti
   'Crea la formula per calcolare la somma della colonna Importo
   wksNuovo.Cells(2 + snpMovimenti.RecordCount, 3).Value = _
    "=SUM(C2:C" & LTrim(Str(snpMovimenti.RecordCount) + 1) & ")"
   'Assegna alla colonna Importi il formato Valuta
   'Dimensiona automaticamente le colonne
   'sulla larghezza massima di ciascuna
   wksNuovo.Columns("A:C").AutoFit
   'Chiude il recordset
   snpMovimenti.Close
   Exit Sub
Errore_AutomazAccessExcel:
   Beep
   MsgBox "Si è verificato il seguente errore di automazione:" & _
    vbCrLf & Err.Description, vbCritical, "Errore Automazione!"
   Set appExcel = Nothing
End Sub
dove sbalgio ? come si mette in vba la condizione di inviarlo come
allegato ad un destinatario prestabilito
.

Fabrizio_LOL ha scritto:

Allora andiamo per gradi. Le cose si possono fare in modo semplice
imparando passo passo oppure copiando e incollando funzioni nella
speranza che vadano bene al nostro caso senza sapere però che cosa
fanno ... diciamo che questa situazione non è la migliore.
poi uno è come MA e ah un c...lo pazzesco ma li è un altro discorso.
La funzione che hai postato è effettivamente complessa e soprattutto
attinge all'automazione di Excel attraverso access ... secondo me fin
troppo avanzata per le esigenze di cui parli. (se poi mi sbaglio
correggimi) In questo caso hai forse mancato di inserire i riferimenti
ad Excel nella finestra di VBA ...
Io però direi che prima di complicarti la vita potresti vedere creare
una macro che utilizza il comando trasferisci foglio di calcolo.
Selezioni esporta e scegli la query da esportare in excel e il nome del
file di destinazione.
Poi converti la macro in vba e ti studi il codice generato.
Per l'invio via mail, su sitocomune ci sono diversi esempi e diverse
tecniche. Oppure studia il comando sendobject direttamente dalla guida
di vba di access.
Se i file che devi esportare sono sempre nella stessa posizione e hanno
sempre lo stesso nome secondo me è più che sufficiente impostare i
parametri del comando e il gioco è fatto.
Facci sapere.
M