Newsgroup: it.comp.appl.access
Titolo: da access ad excel

salve a tutti, vorrei un aiuto su come riportare i dati di access in in un
file excel esistente. Ho creato una query dalla quale preleveo i dati
necessari, poi ho iniziato ad effettuare la seguente procedura:
Dim MioExcel As Object
Set MioExcel = GetObject(, "Excel.Application")
Set MioExcel = GetObject("c:\FileEsistente.xls")
MioExcel.Application.Visible = True
MioExcel.Parent.Windows(1).Visible = True
dove conta è un contatore. il file esistente ha già dei dati che verifico
con:
if  MioExcel.Edit.Cells(2, conta)=null
    MioExcel.Edit.Cells(2, conta)=Query.nome
endif.
I problemi sono: non riconosce la chiamata alla cella, ho provato anche con
le lettere, ma niente,
    oltre a cio mi occorre identificare su excel anchela pagina di lavoro
Ho provato con il createobject e funziona con il range, ma purtroppo sono
legato ad un file excel già formattato dove devo andare ad inserire i dati.
Potete darmi una mano?
Grazie dell'aiuto

 
o copiaincollato una funzione che avevo tagliando qualcosa, non assicuro 
quindi che sia logicamente corretta (con le dim e quant'altro).
Al worksheet puoi dare sia un indice che un nome (se non erro) per 
puntare al foglio che ti interessa.
La funzione "usa" un xls preesistente e lo salva con nuovo nome
function Funz(pPath,nomefile)
     Dim excApp As Excel.Application
     Dim excDoc As Excel.Workbook
     Set excApp = New Excel.Application
     Set excDoc = excApp.Workbooks.Open(pPath & "\modello\agenzie.xls") 
    'apre il modello
     excApp.Visible = False
         With excDoc.Worksheets(1)
	    'riempimento celle con i campi estratti
             .Cells(7, 2) = rst1!C_RAGIONE_SOCIALE
          End With
         'controllo se il file esiste già
         sDir = Dir(nomefile)
         If sDir = "" Then
              excDoc.SaveAs (nomefile) 'salva con nome un file excel
         Else
	     MsgBox " Il file esiste già!"
         End If
     excDoc.Close savechanges:=False  'non salva le modifiche sul modello
     excApp.Workbooks.Close                'chiude per evitare di aprire 
più applicazioni
     excApp.Application.Quit
     Set excDoc = Nothing
     Set excApp = Nothing
end function
--
a.cara

 ha scritto nel messaggio
news:c5c9rl$4d0e$1...@ID-163946.news.uni-berlin.de...

Ciao Alessandro e Fast.
Premetto che l'esempio di Alessandro è corretto, volevo solo
proporre un sofismo tecnicamente più elegante, anche se può
sembrare meno comodo.
Le celle di Excel supportano un Nome, possiamo pertanto
chiamare la Celle RagioneSociale stesso campo della Tabella
di Access magari sarebbe l'Ideale.....!
Senza ricorrere al Merge del Database si può ciclare il Recordset
di Access e compilare direttamente il Foglio di Excel puntando direttamente
al Nome della CELLA, che se è = al Field del RS ci consente un'iterazione
molto elegante e funzionale:
    Dim rs As DAO.Recordset
    Dim fld As DAO.Field
    Dim nme As Excel.Name
    DoCmd.Hourglass True
    'I dati oviamente sono solo d'esempio
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM NomeTabella WHERE
[CampoID]='XXXXXXX'")
    Set xlsApp = CreateObject("Excel.Application")
    xlsApp.Application.Workbooks.Open FileName:="C:\NomeFile.xls",
Editable:=True
    Set xlsActiveWkb = xlsApp.Application.ActiveWorkbook
    For Each fld In rs.Fields             ' Ciclo sull'insieme Fields del
recordset
      For Each nme In xlsActiveWkb.Names  ' Ciclo sull'insieme Names della
cartella attiva
        If fld.Name = nme.Name Then       ' Se il nome campo è uguale al
nome di Name
           With xlsActiveWkb.Worksheets(1).Range(nme.Name)
            .Value = fld.Value            'Ci scrivo il Value del field del
recordset
          End With
        End If
      Next nme
    Next fld
    xlsActiveWkb.Save
    xlsApp.Application.Visible = True
    rs.close
    Set rs = Nothing
Ciao.
@Alex.

 Grazie dell'aiuto proverò la procedura di Alessandro e la integrerò con
quella di @Alex se mi riesce bene la rimetto nella news nel caso dovesse
servire.
ciao