Newsgroup: it.comp.appl.access
Titolo: importare dati e commento da excel

Leggendo vari post e raccogliendo informazioni dal sitocomune sono
riuscito ad importare dati da excel ad access. Ho usato la funzione
dde, ci sono anche altri modi, ma per ora ho analizzato questo e
soddisfa alla grande le mie esigenze.
Mi chiedevo però se è possibile in qualche modo recuperare anche le
informazioni contenute nel commento associato ad alcune celle excel.
Probabilmente no, ma provo a chiedere a voi prima di abbandonare questa
idea...
grazie
mirco

 ha scritto nel messaggio
news:1165573014.0...@79g2000cws.googlegroups.com...



grazie
mirco
in teoria credo di si, non so indicarti di preciso la modalità.
un trucchetto potrebbe essere quello di registrare una nuova macro exel,
lavorare un po' sui commenti e poi andare a leggerti il codice che excel
genera automaticamente. da li prendi spunto per spulciare la guida specifica
di excel che potrai poi riutilizzare nella tua applicazione access.
M

 M
Grazie. In effetti ci sono in parte riuscito.
Da codice, apro il mio file excel, eseguo una macro che trasferisce il
commento dentro a delle celle, e poi trasferisco il contenuto delle
celle in una tabella access.
In parte perchè mi riporta il contenuto racchiuso tra virgolette(") e
con un carattere strano (quadratino) che penso sia l'autore del
commento che ho tolto (la macro excel trasferisce nella cella il
commento senza autore) ma probabilmente ne rimane traccia e, esportato
in access, lo visualizza in questo modo.
Ecco il codice, dove Macro1 è la macro excel che trasferisce il
commento dentro alle celle excel:
Private Sub Comando2_Click()
    Dim cdb As Database
    Dim rkospiti As Recordset
    Dim ospite1 As String
    Dim ospite2 As String
    Dim ospite3 As String
    Dim VerificaNoNull As Variant
    On Error GoTo GestErr
        Set cdb = CurrentDb
        app$ = "C:\Programmi\Microsoft Office\OFFICE11\EXCEL.EXE"
        file$ = CurrentProject.Path & "\commentisettimana.xls"
        Shell app$, 6
        chan = DDEInitiate("Excel", "System")
        DDEExecute chan, "[open(" + Chr$(34) + file$ + Chr$(34) + ")]"
        DDETerminate chan
        chan = DDEInitiate("Excel", file$)
        DDEExecute chan, "[run(""commentisettimana.xls!Macro1"")]"
        Set rkospiti = cdb.OpenRecordset("SELECT * FROM ospiti where
Id= - 1")
            Riga = 2
            Colonna = 1
            VerificaNoNull = DDERequest(chan, "r" & Riga & "c" &
Colonna & "")
        Do While Not IsNull(VerificaNoNull)
        Id = DDERequest(chan, "r" & Riga & "c" & Colonna & "")
        Colonna = Colonna + 1
        giorno = DDERequest(chan, "r" & Riga & "c" & Colonna & "")
        Colonna = Colonna + 1
        ospite1 = DDERequest(chan, "r" & Riga & "c" & Colonna & "")
        Colonna = Colonna + 1
        ospite2 = DDERequest(chan, "r" & Riga & "c" & Colonna & "")
        Colonna = Colonna + 1
        ospite3 = DDERequest(chan, "r" & Riga & "c" & Colonna & "")
        Colonna = Colonna + 1
        rkospiti.AddNew
            rkospiti!Id = Id
            rkospiti!giorno = giorno
            rkospiti!ospite1 = ospite1
            rkospiti!ospite2 = ospite2
            rkospiti!ospite3 = ospite3
        rkospiti.Update
        Riga = Riga + 1
        Colonna = 1
        VerificaNoNull = DDERequest(chan, "r" & Riga & "c" & Colonna &
"")
     Loop
    Set cdb = Nothing
    rkospiti.Close
        Exit Sub
GestErr:
If Err.Number = 3022 Or Err.Number = 3421 Or Err.Number = 13 Then
    Set cdb = Nothing
    rkospiti.Close
    Exit Sub
End If
    Exit Sub
End Sub
Esempio di trasferimento:
"¤a"
al posto di
a
Non so se mi sono spiegato...
mirco

>> che procedurina ...

 che procedurina ...
si, ma non è tutto frutto del mio sacco. Faccio ricerche, trovo le
procedure che possono fare al caso mio, me le studio e le modifico ;) e
un pò alla volta cerco di imparare!
Questo è il pezzo di codice aggiunto che sostituisce i caratteri a
capo con lo spazio bianco, prima di copiare il contenuto in tabella:
ospite1a = DDERequest(chan, "r" & Riga & "c" & Colonna & "")
            Do
                p = InStr(oldp, ospite1a, Chr(10))
                If p = 0 Then
                        Exit Do
                End If
                Mid(ospite1a, p, 1) = " "
                oldp = p + 1
            Loop
        ospite1 = ospite1a
        Colonna = Colonna + 1
Lo stesso codice per ospite2 e per ospite3.
grazie
ciao
mirco