› Sviluppare funzionalita su Microsoft Office con VBA › Prelevare dati da celle in cartella chiusa in base a valore da foglio aperto
-
AutoreArticoli
-
Buongiorno, grazie al vs forum ho iniziato ad usare Vba su excel, ho fatto diverse macro, ma ora avrei una richiesta se possibile, ho cercato ma non riesco, non so da dove iniziare.
In base ai dati nella cella "Targa" in Scheda1 dovrei andare a prendere in automatico tutte le ore di lavorazione presenti nella cartella excel ConsutivoOperatore1 senza aprirlo e metterle nel Foglio Ore di Scheda1, creando un elenco di Data e ore a scendere.
Non so dove sbattere la testa.... è un po' che non creo codici con Vba.... Vi ringrazio anticipatamente...
Allegati:
You must be logged in to view attached files.metti i due file cha hai postato nella stessa cartella, apri il file "scheda1", inserisci un modulo e incolli il codice che ti posto,esegui il codice.
Option Explicit Private cn As Object Sub albatros54ADO24656() Dim cn As Object 'dichiara l'oggetto che sarà la connessione alla fonte dati Dim rs As Object 'dichiara l'oggetto che sarà il recordset Dim s As String, s1 As String Const adOpenStatic = 3 'proprietà CursorType. Usa un cursore statico Const adLockOptimistic = 3 'proprietà LockType. Usa un blocco dal record corrente Const adCmdText = &H1 'proprietà CommandType. Si aspetta un comando di testo (non una tabella, p.es.) s1 = ThisWorkbook.Path & "\" & "consuntivooperatore1.xls" 'crea gli oggetti ADO connection e recordset Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") 'apre una connessione al file sopra individuato (il cui percorso è nella variabile "s"); 'attenzione alle doppie virgolette (fanno parte della stringa di connessione 'e quindi vanno raddoppiate in fase di costruzione della stringa) cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & s1 & ";" & _ "Extended Properties=""Excel 12.0 Macro;HDR=Yes;"";" 'apre il recordset impostando la stringa query necessaria 'qui selezionaiamo tre campi e un campo calcolato al volo 'dal foglio1, colonne A:G, raggruppando i dati sui primi tre campi 'al metodo Open dobbiamo passare il riferimento all'oggetto connection 'e i tre parametri opzionali per impostare il tipo di cursore. rs.Open "SELECT databi,totale FROM tabella where lavoro='" & Sheets("Scheda").Range("b14") & "'", cn Sheets("ORE").Range("b2:c14").ClearContents Sheets("ORE").Range("b2").CopyFromRecordset rs 'chiudiamo il recordset, la connessione e annientiamo gli oggetti rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )@ALLA VOCE:
nel post precedente mi sono dimenticati di comunicarti le variazioni che bisogna fara al file "ConsuntivoOperatore1", devi modificare le voci "data"in databi" e la voce"totale(decimi)" in "totale", poi devi selezionare il range("A2:d22") e dargli il nome"Tabella".
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Ciao, grazie per la disponibiltà, ho provato ma esce sempre errore:
---> rs.Open "SELECT databi,totale FROM tabella where lavoro='" & Sheets("Scheda").Range("b14") & "'", cn
Sheets("ORE").Range("b2:c14").ClearContents
Sheets("ORE").Range("b2").CopyFromRecordset rsHo modificato si "data" in "databi" e "totale" e dato il nome "Tabella" al range indicato...
Grazie
che errore ti da?che versione di excel usi?
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Uso Excel 2016, mi da:
Errore di run-time
Il motore di database di Microsoft Access non è in grado di trovare l'oggetto 'tabella'. Assicurarsi che l'oggetto esista e che il nome e il percorso digitati siano corretti.
Il range indicato l'ho chiamato tabella come mi avevi detto.
ti posto i file , dove ho fatto delle prove e tutto funziona, i due file li devi inserire nella stessa DIR. prova e fai sapere
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Allegati:
You must be logged in to view attached files. -
AutoreArticoli