Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

query access pilotata da excel

820 views
Skip to first unread message

lu...@fastwebnet.it

unread,
Sep 13, 2012, 4:40:17 AM9/13/12
to
Ciao a tutti,
vorrei alleggerire un file excel (2007) molto complesso, spostando su access il database su cui si basa (se lo lascio in Excel, il file fatica ad elaborare).
I criteri di selezione della query in access verrebbero indicati da excel, ed access restituirebbe ad excel solo i record selezionati.
Su excel avrei intenzione di riservare un numero limitato di righe per i record da importare (es. 300 a fronte di un database complessivo di alcune migliaia).
E’ possibile fare tutto in background, con una macro o meglio con qualche metodo non meccanico?
Grazie in anticipo per l’aiuto.
Lupow

r

unread,
Sep 13, 2012, 5:10:23 AM9/13/12
to

lu...@fastwebnet.it

unread,
Sep 14, 2012, 3:16:02 AM9/14/12
to
Grazie Mauro del link,
ho adattato i tuoi files indicando una query anzichè una tabella.
Tramite il codice ho estratto in excel la selezione realizzata dalla query (che risiede in access).
Ciò che mi serve però è che il criterio di selezione della query venga indicato e/o modificato in excel, agisca in background in access e restituisca la selezione risultante in excel.
C'è qualche soluzione?

lu...@fastwebnet.it

unread,
Sep 17, 2012, 5:34:29 AM9/17/12
to
Il giorno giovedì 13 settembre 2012 11:10:23 UTC+2, r ha scritto:
ooops, scusa Roberto, pensavo fossi Mauro...
comunque..
ho adattato i files del link indicando una query anzichè una tabella.
Tramite il codice ho estratto in excel la selezione realizzata dalla query (che risiede in access).
Ciò che mi serve però è che il criterio di selezione della query venga indicato e/o modificato in excel, agisca in background in access e restituisca la selezione risultante in excel.
C'è qualche soluzione?
grazie per l'aiuto
Lupow

Mauro Gamberini

unread,
Sep 19, 2012, 8:13:12 AM9/19/12
to


ooops, scusa Roberto, pensavo fossi Mauro...
comunque..
ho adattato i files del link indicando una query anzichè una tabella.
Tramite il codice ho estratto in excel la selezione realizzata dalla query
(che risiede in access).
Ciò che mi serve però è che il criterio di selezione della query venga
indicato e/o modificato in excel, agisca in background in access e
restituisca la selezione risultante in excel.
C'è qualche soluzione?
grazie per l'aiuto
Lupow

*************************


Capito poco.
Per lavorare direttamente in Access(versione?)
ci sono le Stored Procedure.

Altrimenti hai il recordset con i dati della
query che recuperi dal db
e lo leggi record per record, campo per campo.

O ancora fai una query alla query:

rs.Open "SELECT Camp1, Campo2 FROM tuaQuery WHERE QuelloCheVuoi", _
cn, adOpenKeyset, _
adLockOptimistic, _
adCmdText

O ancora, per favore, spiega meglio.

Grazie
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/

lu...@fastwebnet.it

unread,
Sep 20, 2012, 6:40:16 AM9/20/12
to
Ciao Mauro, provo a rispiegarmi.
Es.: su Access2007 ho un database con 2 campi: “nome” e “acquisti”.
Nel campo “nome” ho 2 persone: Franco e Pino, cui corrispondono 10 “acquisti” ciascuno.
In Excel (senza aprire Access) voglio poter scegliere se estrarre solo gli acquisti di Franco o solo quelli di Pino.
Al momento ho risolto creando 2 distinti pulsanti, ciascuno dei quali attiva con una macro la query dedicata a Franco, o quella dedicata a Pino (da dati/microsoft query).
E’ possibile evitare le macro, attraverso codice, e scegliere se caricare i dati di Franco o quelli di Pino tramite menu a tendina/elenco presente in una cella specifica di excel?
Grazie in anticipo
Ciao
Lupow

Mauro Gamberini

unread,
Sep 20, 2012, 8:21:43 AM9/20/12
to
ha scritto nel messaggio
news:ff559a83-544d-4a0d...@googlegroups.com...

Ciao Mauro, provo a rispiegarmi.
Es.: su Access2007 ho un database con 2 campi: �nome� e �acquisti�.
Nel campo �nome� ho 2 persone: Franco e Pino, cui corrispondono 10
�acquisti� ciascuno.
In Excel (senza aprire Access) voglio poter scegliere se estrarre solo gli
acquisti di Franco o solo quelli di Pino.
Al momento ho risolto creando 2 distinti pulsanti, ciascuno dei quali attiva
con una macro la query dedicata a Franco, o quella dedicata a Pino (da
dati/microsoft query).
E� possibile evitare le macro, attraverso codice, e scegliere se caricare i
dati di Franco o quelli di Pino tramite menu a tendina/elenco presente in
una cella specifica di excel?
Grazie in anticipo
Ciao
Lupow
*******************************

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 Then Exit Sub

If Target.adress = "$A$1" Then

'passi il valore della cella alla query
'il resto del codice

End If

End Sub

lu...@fastwebnet.it

unread,
Sep 20, 2012, 11:13:42 AM9/20/12
to
Scusa Mauro ma non ci arrivo…
Metto una casella combinata in A1 con opzionabili Pino e Franco?
Come faccio dalla casella combinata a “passare il valore della cella alla query"?
ciao
Lupow

Mauro Gamberini

unread,
Sep 20, 2012, 11:27:17 AM9/20/12
to
****************************************************

Nessuna casella combinata sul foglio.
Una semplice convalida dati con i valori da passare alla query.

Intercetti il cambio nel codice che ho postato in precedenza



--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

lu...@fastwebnet.it

unread,
Sep 21, 2012, 3:56:24 AM9/21/12
to
Il giorno giovedì 13 settembre 2012 10:40:17 UTC+2, (sconosciuto) ha scritto:

lu...@fastwebnet.it

unread,
Sep 21, 2012, 4:00:07 AM9/21/12
to
Ciao Mauro,
come mi hai scritto ho fatto la convalida dati in A1 con opzionabili i due nomi presenti nel database: Pino o Franco
Non so però come passare questi valori alla query.
La query l’ho costruita così:

Dal file excel “pino e franco.xls”:
Menu Dati
Da altre origini
Da microsoft query
MS Access database
Database
Seleziono il database (es: FrancoPino.accdb)
Scegli colonne: Seleziono QueryUno (contenente i campi “nomi” e “acquisti”)
Filtra dati - colonna da filtrare: nomi
Includi solo le righe: Ora dovrei idealmente creare un collegamento con la cella excel di convalida dati A1.
Come fare? La creazione guidata query non ti permette altro che fare una scelta fra Pino e Franco (i due nomi presenti nel database).
Grazie ancora, ciao
Lupow

Mauro Gamberini

unread,
Sep 21, 2012, 5:03:38 AM9/21/12
to
<cut>

Io sto seguendo la logica che trovi al link
postato da Roberto.

Quindi una query come questa(quella che trovo al link):

rs.Open "SELECT * FROM tblAnagrafica", cn, 1, 3, 1

la modificherò così:

rs.Open "SELECT * FROM tblAnagrafica WHERE Nome='" & RiferimentoCella.Value
& "'" , cn, 1, 3, 1

(tutto su di una riga, non so come venga troncato qui)
Questo non solo è vb, ma anche la base della sintassi SQL.
Vedi qui:
http://www.w3schools.com/sql/default.asp
e qui per ADO:
http://www.w3schools.com/ADO/default.asp

lu...@fastwebnet.it

unread,
Sep 26, 2012, 5:30:11 AM9/26/12
to
Grazie Mauro,
purtroppo non riesco ad attuare i suggerimenti, provo a spiegarmi come posso:
nel file provaAdoSenzaRiferimento.xls linkato da Roberto è disattivato il codice:
a) Public Sub mRecuperaDati()
Mentre è attivo il codice:
b) Public Sub mRecuperaDati(ByVal sQuery As String).

Nel codice “a” è presente la riga:
rs.Open "SELECT * FROM tblAnagrafica", cn, 1, 3, 1
che tu mi dici di sostituire con:
rs.Open "SELECT * FROM tblAnagrafica WHERE Nome='" & RiferimentoCella.Value & "'" , cn, 1, 3, 1.

Visto che è attivato invece il codice “b”, che riporta invece questa riga:
rs.Open sQuery, cn, 1, 3, 1
come devo modificare il codice “b”?

Inoltre, per realizzare ciò che mi serve, dovrei lanciare la macro mQuery2 presente nello stesso file, il cui codice è:
Public Sub mQuery2()
Dim s As String
s = "SELECT Nome, Cognome, Comune " & _
"FROM tblAnagrafica " & _
"WHERE Provincia = 'Fe'"
Call mRecuperaDati(s)
End Sub
..che fa proprio ciò che serve a me, ma l’istruzione ‘Fe’ dovrebbe essere modificabile tramite una cella di “convalida dati” presente nel foglio, da cui lanciare la macro mQuery2 in automatico.

Grazie ancora per l'aiuto.
Ciao
Lupow

Mauro Gamberini

unread,
Sep 26, 2012, 5:37:05 AM9/26/12
to
Inoltre, per realizzare ciò che mi serve, dovrei lanciare la macro mQuery2
presente nello stesso file, il cui codice è:
Public Sub mQuery2()
Dim s As String
s = "SELECT Nome, Cognome, Comune " & _
"FROM tblAnagrafica " & _
"WHERE Provincia = 'Fe'"
Call mRecuperaDati(s)
End Sub
*******************************************************

Devi modificare la stringa che passi alla query:

s = "SELECT Nome, Cognome, Comune " & _
"FROM tblAnagrafica " & _
"WHERE Provincia = '" & RiferimentoCella.Value & ""

RiferimentoCella.Value andrà modificato con il riferimento
alla tua cella, ad esempio:
Foglio2.Range("A1").Value

Sarebbe meglio utilizzare i parametri, ma va bene così.

lu...@fastwebnet.it

unread,
Sep 26, 2012, 6:24:27 AM9/26/12
to
ecco, ho provato a scriverla così, ma mi respinge:

Public Sub mQuery2()
Dim s As String
s = "SELECT Nome, Cognome, Comune " & _
"FROM tblAnagrafica " & _
"WHERE Provincia = Foglio2.Range'A1'.Value"
Call mRecuperaDati(s)
End Sub

Cosa sbaglio?
ciao
Lupow

Mauro Gamberini

unread,
Sep 26, 2012, 6:50:33 AM9/26/12
to
ecco, ho provato a scriverla così, ma mi respinge:

Public Sub mQuery2()
Dim s As String
s = "SELECT Nome, Cognome, Comune " & _
"FROM tblAnagrafica " & _
"WHERE Provincia = Foglio2.Range'A1'.Value"
Call mRecuperaDati(s)
End Sub

*********************************************
A me sembra di aver postato un'altra cosa.
Prova a *leggere bene* quel codice.




lu...@fastwebnet.it

unread,
Sep 26, 2012, 8:25:24 AM9/26/12
to
ora ho provato a riscriverla così:
"WHERE Provincia='"& Foglio2.Range("A1").Value &""
ma mi invia al codice mRecuperaDati, indicando "errore di compilazione variabile non definita" all'altezza di 'riempio il recordset.
ho provato a fare altre modifiche ma senza successo.
Come avrai capito non conosco il linguaggio VB.
Come devo modificarla?
Ciao
Lupow

Mauro Gamberini

unread,
Sep 26, 2012, 10:18:28 AM9/26/12
to
ma mi invia al codice mRecuperaDati, indicando "errore di compilazione
variabile non definita" all'altezza di 'riempio il recordset.
******************************************************

Domande:
Windows 7 a 64 bit?
Il database è .mdb?

lu...@fastwebnet.it

unread,
Sep 26, 2012, 10:30:00 AM9/26/12
to
window7 professional, 64 bit
database .mdb (è quello linkato da Roberto)

lu...@fastwebnet.it

unread,
Sep 27, 2012, 5:32:53 AM9/27/12
to
Ciao Mauro, oggi ho rifatto tutto il percorso e il risultato è diverso (evidentemente a forza di modificare il file era successo o avevo combinato qualcosa di strano):
ho creato il foglio2 e in A1 ho messo la convalida dati con opzionabili le varie provincie.
Quando lancio la macro Query2 modificata con:
"WHERE Provincia='" & Foglio2.Range("A1").Value & ""
sul foglio (e non nella maschera VB) mi compare il messaggio:
2147217900 errore di sintassi nella stringa nell'espressione della query 'Provincia='Fe'.
(Fe è la provincia che ho opzionato in A1; se cambio la provincia il messaggio di errore si adegua alla provincia).
Hai qualche idea in proposito?
grazie ancora e buona giornata
Lupow

Mauro Gamberini

unread,
Sep 29, 2012, 4:54:52 AM9/29/12
to
ha scritto nel messaggio
news:4b4f9e45-7e48-4ede...@googlegroups.com...

Ciao Mauro, oggi ho rifatto tutto il percorso e il risultato � diverso
(evidentemente a forza di modificare il file era successo o avevo combinato
qualcosa di strano):
ho creato il foglio2 e in A1 ho messo la convalida dati con opzionabili le
varie provincie.
Quando lancio la macro Query2 modificata con:
"WHERE Provincia='" & Foglio2.Range("A1").Value & ""
sul foglio (e non nella maschera VB) mi compare il messaggio:
2147217900 errore di sintassi nella stringa nell'espressione della query
'Provincia='Fe'.
(Fe � la provincia che ho opzionato in A1; se cambio la provincia il
messaggio di errore si adegua alla provincia).
Hai qualche idea in proposito?
grazie ancora e buona giornata
Lupow
*********************

Copia/incolla questo sotto:

s = "SELECT Nome, Cognome, Comune " & _
"FROM tblAnagrafica " & _
"WHERE Provincia = '" & _
Foglio2.Range("A1").Value & "'"

Io ho esattamente quello che mi aspetto.

Mauro Gamberini

unread,
Sep 29, 2012, 4:54:52 AM9/29/12
to
ha scritto nel messaggio
news:4b4f9e45-7e48-4ede...@googlegroups.com...

*********************

Copia/incolla questo sotto:

s = "SELECT Nome, Cognome, Comune " & _
"FROM tblAnagrafica " & _

AlbertFinch

unread,
Oct 5, 2012, 6:13:49 AM10/5/12
to
Ciao ragazzi,
grazie per il vostro thread perche' mi ha dato ottime indicazioni rispetto a quello che voglio fare.
Il problema e' che la mia situazione e' abbastanza piu' complessa e quindi vi ringrazio in anticipo per il tempo che mi dedicherete.

-Sto lavorando in cartelle condivise su uno sharepoint 2010, il mio progetto e' creare un database protetto all'interno di una cartella inaccessibile se non a me.
-Il database contiene molti dati che devono essere elaborati in maniera molto complessa all'interno di un file excel che io preimpostato con delle macro.
- gli utenti devono quindi essere in grado di aprire il mio excel nel quale vengono caricati i dati dal database filtrando solo alcuni record in base a un parametro (che in questo caso e' ad esempio la password o qualunque dato decidiamo di passare da excel)

Mi chiedevo come posso inserire una macro nel mio excel che vada ad interrogare il database (benche' non accessibile direttamente inquanto contenuto in una cartella riservata solo a me) caricando in excel solo i record che contengono un determinato paramentro passato da excel.

Sono abbastanza ferrato in vba per excel ma quasi zero su ADO ed SQL, intuisco che forse l'mdb va "pubblicato" nella cartella perche' non me lo fa copiare manualmente ma mi trovo un po' sperduto.

Grazie mille per la soluzione, in particolare Mauro immagino che per te non sara' difficile trovarla ma sono sicuro che richiede un po' di tempo per essere buttata giu' e ti ringrazio anticipatamente se vorrai aiutarmi.

Ciao, saluti
--
Vedi su Narkive:
http://narkive.com/bQQVqdxM

AlbertFinch

unread,
Oct 5, 2012, 7:19:31 AM10/5/12
to
ultimora, se puo' essere d'aiuto: ho trovato questo tip: http://www.rondebruin.nl/accessexcel.htm

Fa tutto quello che mi serve ma usa Access mdb 2003 che non riesco a copiare sullo sharepoint. se lo trasformo in 2007 posso copiarlo sulla cartella sharepoint ma non funziona.

Grazie!

lu...@fastwebnet.it

unread,
Oct 8, 2012, 8:46:59 AM10/8/12
to
Grazie Mauro, funziona perfettamente! (scusa sono stato via per qualche giorno e non ho potuto darti riscontro subito).
Ciao
Lupow
0 new messages