Newsgroup: it.comp.appl.access
Titolo: Access da Routine evento scrivere su Foglio Excel

Ciao a tutti,
utilizzo da tempo questa possibilità, cioè scrivere, su di un Foglio Excel, i dati prelevari da una Tabella o Query.
Ultimamente mi sono imbattuto in un foglio Excel che contiene delle macro che non posso disattivare in quanto sono funzionali alla produzione di grafici.
Il mio problema è che i dati, sul Foglio excel, sono quelli che vengono letti ed elaborati dalle macro per originare poi i grafici e sono gli stessi dati che devo scrivere con la routine evento.
La mia routine evento, pur leggendo correttamente i dati da scrivere, non riesce poi a scriverli sul foglio excel.
C'è un sistema per scrivere anche su fogli excel con macro?
Grazie per l'aiuto


Parli di MACRO, ma sono MACRO veramente o FORMULE nel foglio...?
Per scrivere nel foglio di Excel, usi AUTOMATION o
TRANSFERSPREADSHEET...?
 
Se sono veramente macro, e se usi Automazione potresti usare
      -----> ObjectExceeApplication.EnableEvents = False  (ma solo se
lo fai con Automazione)
     incollare i dati, quindi ripristini e chiudi.
 
Se invece usi TransfertSpreadsheet, in tutti i casi non puoi fare
nulla, ma se parlavi di MACRO, pur riferendoti in realtà a FORMULE,
non è possibile in nessun caso...
mi pare ovvio che tu non possa saltare le CELLE con le formule in
questo caso, ed anche usando Automazione, dovresti MAPPARE in modo
RIGIDO le celle da sovrascrivere.
 
Ciao
@Alex

 
Ciao Alex,
intanto sono formule e non macro ed alcune celle sono protette.
Poi il non so se uso AUTOMATION o TRANSFERSPREADSHEET ma ti dettaglio il codice che uso:
    Dim rs As DAO.Recordset
    Dim ex As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
Set ex = New Excel.Application
ex.Visible = False    'metti false se non vuoi vedere excel a video
'apre il file xls
'Set wb = "ex.Workbook.Open" & strPath
Set wb = ex.Workbooks.Open("F:\Duralamp\MasterExcel\FatturatoComparato.xlsx")
Set ws = wb.Worksheets(1)
'loop sui record
ws.Cells(2, 6) = "al " & Date
Set Tb = Dc.OpenRecordset("SELECT * FROM SelFatturatoComparato")
Tb.MoveLast
Tb.MoveFirst
lonNRec = Tb.RecordCount
Call BarraProgressione(0, Tb, 1, 189)
intNRighe = 3
For loncont = 1 To lonNRec
    Call BarraProgressione(1)
       intNRighe = intNRighe + 1
       ws.Cells(intNRighe, 1) = Tb("CodArt")
       ws.Cells(intNRighe, 2) = Tb("Descrizione")
       ws.Cells(intNRighe, 3) = Tb("Gruppo")
       ws.Cells(intNRighe, 4) = Tb("DesGruppo")
       ws.Cells(intNRighe, 5) = Tb("SGruppo")
       ws.Cells(intNRighe, 6) = Tb("DesSGruppo")
       ws.Cells(intNRighe, 7) = Tb("TotQuantitaPrimo")
       ws.Cells(intNRighe, 8) = Tb("TotValorePrimo")
       ws.Cells(intNRighe, 9) = Tb("TotQuantitaSecondo")
       ws.Cells(intNRighe, 10) = Tb("TotValoreSecondo")
       ws.Cells(intNRighe, 11) = Tb("TotQuantitaTerzo")
       ws.Cells(intNRighe, 12) = Tb("TotValoreTerzo")
       If loncont < lonNRec Then
          Tb.MoveNext
       End If
Next loncont
id_Codice = "Venduto Comparato" & ".xlsx"
strInput = "F:\Duralamp\StatisticheAcquisti\" & id_Codice
wb.SaveAs strInput
wb.Close SaveChanges:=True
Set wb = Nothing
