Newsgroup: it.comp.lang.visual-basic
Titolo: Esportare in Excel

Ciao a tutti, io ho una tabella TabellaM in Access.
Come faccio, tramite un pulsante di VB, a esportare tutti i record della
tabella in un file, es. record.xls???
Saluti
MM
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 MM
un modo abbastanza pratico e', per esempio,
leggere tutte le risposte al tuo post precedente...
j.esportazione

A dire il vero ho cercato su
http://groups.google.com/advanced_group_search
dove avevi detto tu, visto che mi serve in VB, ma mi trova 24 risposte 
per l'NG in questione in INGLESE e TEDESCO!!!!
Boh


 Boh
gia'. boh...
http://groups.google.com/groups?as_q=dbgrid%20excel&as_ugroup=it.comp.lang.v
isual-basic&num=20&hl=it
da cui
http://groups.google.com/groups?q=dbgrid+excel+group:it.comp.lang.visual-bas
ic&hl=it&ie=ISO-8859-1&oe=ISO-8859-1&selm=8c4n3d%248rj%241%40fe1.cs.interbus
iness.it
&rnum=7
ammetto, avevo postato in inglese.
ma non e' che poi quando fai coding puoi usare il francese o il latino...
j.pal

L'ho trovato e ti ringrazio.
Solo che quando gli do l'esecuzione mi si blocca su
Dim xApp As Excel.Application
dicendomi:
Errore di compilazione - Tipo definito dall'utente non definito.
Che devo fare, rinunciare???
Grazie


 Grazie
con quel codice, sul pc ci vuole excel installato regolarmente (nel senso
che gli oggetti excel devono risultare nel registro).
seno' prova a cercare ancora con google, mi sembra che maurizio borrelli e/o
altri avessero postato un codice diverso.
ciao, a.

Excel ce l'ho istallato!!!
Continuerò a cercare su google...
Grazie Mille
MM


 Grazie Mille
allora -- direi -- controlla
progetto | riferimenti
che sia spuntato
ms excel 9 obj library

Purtroppo non riesco a farlo funzionare. 
Ho trasformato una macro di Access2000, che esportava la tabella in
Excel,
in VB. Il codice è questo:
DoCmd.TransferSpreadsheet acExport, 8, "TabellaMonete", "C:\Export.xls",
True, ""
ma come funzione!!!
Come faccio ad applicarla ad un bottone VB???
E, secondo te, funziona? In fondo a me va bene che sovrascriva la
tabella
di volta in volta.
Grazie ancora


 Grazie ancora
opinione personale:
con un ciclo esporta la tabella in un file .csv, che excel legge
tranquillamente.
ciao, a.

 tranquillamente.
oppure crei un recordset Ado e lo passi ad excel...
ciao
ugo
-----------------------------------
Links:
Sito Comune: 
www.it-lang-vb.net
MSDN: 
msdn.microsoft.com

 oppure crei un recordset Ado e lo passi ad excel...
abbe', c'e' anche un sito sql*xl, ma mi limitavo
a soluzioni pulite, classiche
mica pacciate :>


In pratica:
nell'evento click di una button fai:
dim rs as new adodb.recordset
with rs
    .cursorloacation = aduseclient
    .open "SELECT * FROM MIATABELLA", currentproject.connection,
adusestatic, adlockreadonly
    toexcel rs, "nomechevogliodarealfoglioexcel"
    .close
end with
e in un modulo bas o nello stesso form metti la:
Sub ToExcel(rsData As ADODB.Recordset, sName As String)
    Dim TempArray()
    Dim exclApp As Object
    Dim WKS As Object
    Dim NN, KK As Integer
    Dim nFieldsCount as Integer, nRecordCount As Long
    On Error GoTo err
    'Rettifico il Nome Foglio giusto per dormire tranquillo:
    sName = Replace(Replace(Replace(sName, ":", ""), "\", ""), "/", "")
    sName = Replace(Replace(Replace(Replace(sName, "?", ""), "*", ""), "[",
""), "]", "")
    'dichiaro una variabile excel.application
    Set exclApp = GetObject(, "Excel.Application")
resuming:
    With exclApp
        .Visible = True
        With .activeWorkbook
            Set WKS = .Worksheets.Add
            For NN = 1 To .Sheets.Count
                If sName = .Sheets(NN).Name Then
                    sName = sName + "-nuovo"
                End If
            Next NN
        End With
    End With
    sName = Left(sName, 31)
    With WKS
        .cells.Delete
        .cells(1, 1) = App.FileDescription & "  " & App.major & "." &
app.minor & "." & trim(app.revision) & " - Esportazione Dati."
        .cells(2, 1) = "Attendere, lettura dati in corso: " & sName
    End With
    With rsData
        nFieldsCount = .Fields.Count
        nRecordCount = .RecordCount
    End With
    If nRecordCount = 0 Then
        With WKS
            .cells(4, 1) = "NESSUN dato disponibile"
            .cells(4, 1).Font.Bold = True
        End With
    Else
        'Riporto il Recordset su Un Array, per pulire i NULL
        ReDim TempArray(1 To nRecordCount, 1 To nFieldsCount)
        For NN = 1 To nRecordCount
            WKS.cells(4, 1) = "Conversione in corso record: " & str(NN) & "
/ " & nRecordCount
            DoEvents
            For KK = 1 To nFieldsCount
                If IsNull(rsData(KK - 1)) Then
                    TempArray(NN, KK) = Empty
                ElseIf VarType(rsData(KK - 1)) = vbString And
Left(rsData(KK - 1), 1) = "=" Then
                    TempArray(KK, KK) = "'" + rsData(KK - 1)
                Else
                    TempArray(NN, KK) = rsData(KK - 1)
                End If
            Next KK
            rsData.MoveNext
        Next NN
        'Carico lo sheet con i dati
        'Questa è l'istruzione "automatica" ma preferisco lavorare di mio...
        'WKS.Range("A2").CopyFromRecordset rsData
        With WKS
            For KK = 0 To nFieldsCount - 1
                .cells(1, KK + 1).Value = rsData.Fields(KK).Name
            Next KK
            .Range(WKS.cells(1, 1), WKS.cells(1, nFieldsCount)).Font.Bold =
True
            .Range("A2").Resize(rsData.RecordCount,
rsData.Fields.Count).Value = TempArray
            .cells(2, 1).Activate
            .Columns.AutoFit
            .Name = sName
        End With
    End If
    'Chiusura degli oggetti aperti
    rsData.Close
    Set rsData = Nothing
    Set exclApp = Nothing
    Set WKS = Nothing
    Screen.MousePointer = 0
    Exit Sub
err:
    If err = 429 Then
        err.Clear
        Set exclApp = CreateObject("Excel.Application")
        exclApp.Workbooks.Add
        Resume resuming
    Else
        'ShowErrMsg 'Routine gestione Errori: praticamente:
        Msgbox Trim(str(Err.number)) & ": " & err.descrizptio
    End If
    Screen.MousePointer = 0
End Sub
ciao
ugo

 mica pacciate :>
ah, mi sembrava "paccian-ate"...  :-P
ciao
ugo

 beh, è vero che il "classico" è sempre di moda...
gia'.
j.evergreen
tant'e' che mi sembra di notare che alla fin fine
anche tu in ado cicli.. oh, se cicli... :PPP
j.cicla.tu.che.ciclo.anch.io
 :)

 
j.cicla.tu.che.ciclo.anch.io
 :)
:)
ciao
ugo

 :-(((
e' un'utentesca abitudine lamarckiana, che purtroppo condivido (ah la
tauromachia! ah il doevents!), dovuta all'ambiente windows.
se qualcosa non si muove, non sai mai se si e' inchiodato il pc.
non vale d'altronde la controprova: se anche qualcosa si muove, magari il pc
e' inchiodato che piu' non potrebbe...
j.che.delizie.le.ms...

 dim rs as new adodb.recordset
Già a questo punto mi dice ERRORE DI COMPILAZIONE - TIPO DEFINITO
DALL'UTENTE NON DEFINITO
Perchè??????



Perchè non hai aggiunto ado nei riferimenti.
Visto che sei in vba di access, vai nel modulo vba - strumenti - riferimenti
e aggiungi microsoft activex data objects 2.xx
ciao
ugo

Hai ragione, avevo 2.0 invece di 2.7.
Ora quell'errore non me lo da piu.
Però mi qui:
ElseIf VarType(rsData(KK - 1)) = vbString AndLeft(rsData(KK - 1), 1) =
"=" Then
mi rimane rossa!!! va scritta cosi, tutta di seguito? Mi dice che manca
il THEN!!!
Grazie ancora....


 Perņ mi qui:



ehm... copia-incolla con correzione selvaggia...  pardon        :-P
adOpenStatic, adLockReadOnly
ciao
ugo.redface



c'è anche un altro errore: la toexcel chiude il recordset ado...
e c'è una conversione implicita di tipi nella riga:
WKS.cells(4, 1) = "Conversione in corso record: " & Str(NN) & "/ " &
nRecordCount
ri-pardon
ciao
ugo

 ha scritto nel messaggio
news:a7ch85$kdl2v$1...@ID-96367.news.dfncis.de...



la connection che io avevo corretto nel codice era quella di access.
Se usi da vb, devi creare una connection ado ed usarla al posto di quella
del progetto corrente di access.
Cmq, visto l'inaspettato successo dell'argomento "esportazione a excel",
ho postato al Sc un progettino che sta fra l'esempio di codice e la faq...
( Timothy: a te la palla... :-P )
ciao
ugo

 ha scritto nel messaggio
news:a7cugq$jhb2t$1...@ID-96367.news.dfncis.de...


 ha scritto nel messaggio
news:yanm8.52968$1S3.1...@twister1.libero.it...
