L'esempio ExcelADO.exe illustra in che modo è possibile
utilizzare ADO (ActiveX Data Objects) con il provider Microsoft Jet OLE DB 4.0
per leggere e scrivere dati nelle cartelle di lavoro di Microsoft Excel.
Il
seguente file è disponibile per il download dall'Area download Microsoft
(l'installazione è in inglese):
ExcelADO.exe
(http://download.microsoft.com/download/excel2000/sample/12_27_2000/w98nt42kme/en-us/excelado.exe)
Data di rilascio:
12 dicembre 2000
Per ulteriori informazioni sul download di file di
supporto Microsoft, fare clic sul numero dell'articolo della Microsoft
Knowledge Base riportato di seguito:
119591
(http://support.microsoft.com/kb/119591/
)
Come ottenere file di supporto Microsoft dai servizi online
Il file è stato controllato e non contiene virus. Microsoft ha
utilizzato il software antivirus più recente disponibile al momento della data
di pubblicazione del file. Il file viene salvato su server con un livello di
protezione avanzata che impedisce modifiche non autorizzate.
Perché utilizzare ADO?
L'utilizzo di ADO per trasferire o recuperare dati da una
cartella di lavoro di Excel offre agli sviluppatori diversi vantaggi in termini
di automazione in Excel:
- Prestazioni. Microsoft Excel è un server ActiveX out-of-process. ADO viene
eseguito in-process e consente di ridurre il sovraccarico dovuto alle chiamate
out-of-process.
- Scalabilità. Per applicazioni Web, non è sempre desiderabile automatizzare
Microsoft Excel. ADO offre una soluzione più scalabile per la gestione dei dati
di una cartella di lavoro.
ADO può essere utilizzato per trasferire dati non elaborati in
una cartella di lavoro. Non è possibile utilizzare ADO per applicare formati o
formule alle celle. Tuttavia, è possibile trasferire dati in una cartella di
lavoro preformattata il cui formato viene mantenuto. Qualora fosse necessaria
una formattazione "condizionale", una volta inseriti i dati è possibile
ottenere tale formattazione grazie all'automazione o con una macro nella
cartella di lavoro.
Specifiche del provider Jet OLE DB per cartelle di lavoro di Excel
Il modulo di gestione di database Microsoft Jet può essere
utilizzato per accedere a dati in altri formati file di database, ad esempio
cartelle di lavoro di Excel, attraverso driver ISAM (Indexed Sequential Access
Method). Al fine di aprire i formati esterni supportati dal provider Microsoft
Jet 4.0 OLE DB, è possibile specificare il tipo di database nelle proprietà
estese per la connessione. Il provider Jet OLE DB supporta i seguenti tipi di
database per le cartelle di lavoro Microsoft Excel:
- Excel 3.0
- Excel 4.0
- Excel 5.0
- Excel 8.0
NOTA: utilizzare il tipo di database di origine Excel 5.0 per cartelle
di lavoro Microsoft Excel 5.0 e 7.0 (95) e utilizzare il tipo di database di
origine Excel 8.0 per cartelle di lavoro Microsoft Excel 8.0 (97) e 9.0 (2000).
L'esempio ExcelADO.exe utilizza cartelle di lavoro di Excel nel formato Excel
97 e Excel 2000.
Gli esempi seguenti illustrano una connessione ADO
a una cartella di lavoro di Excel 97 o 2000:
Dim oConn As New ADODB.Connection
With oConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open "C:\Book1.xls"
'....
.Close
End With
Oppure
Dim oConn As New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Book1.xls;" & _
"Extended Properties=""Excel 8.0;"""
oConn.Close
Convenzioni di denominazione Vi sono molti modi per poter fare riferimento a una
tabella, o intervallo, in una cartella di lavoro di Excel:
- Utilizzare il nome foglio seguito dal simbolo del dollaro,
ad esempio [Foglio1$] o [Fogliodilavoro$]). Una tabella di cartelle di lavoro a
cui si fa riferimento in questo modo è costituita dall'intero intervallo
utilizzato del foglio di lavoro.
oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic
- Utilizzare un intervallo con un nome definito, ad esempio
[Tabella1].
oRS.Open "Select * from Table1", oConn, adOpenStatic
- Utilizzare un intervallo con un indirizzo specifico, ad
esempio [Foglio1$A1:B10].
oRS.Open "Select * from [Sheet1$A1:B10]", oConn, adOpenStatic
Intestazioni di tabella Con le cartelle di lavoro di Excel, la prima riga di un
intervallo viene considerata come la riga di intestazione, o nomi campo, in
base all'impostazione predefinita. Se il primo intervallo non contiene
intestazioni sarà possibile specificare
HDR=NO nelle proprietà estese della stringa di connessione. Se la prima
riga non contiene intestazioni, il provider OLE DB denomina automaticamente i
campi, dove F1 rappresenta il primo campo, F2 il secondo campo e così
via.
Tipi di dati A differenza di un database tradizionale, non vi è un
modo diretto per specificare i tipi di dati per colonne nelle tabelle di Excel.
Al contrario, il provider OLE DB analizza un numero limitato di righe in una
colonna per stabilire il tipo di dati relativi a un campo. In base
all'impostazione predefinita, il numero di righe da analizzare è pari a otto
(8). È possibile modificare il numero di righe da analizzare specificando un
valore compreso tra uno (1) e sedici (16) in base all'impostazione
MAXSCANROWS nelle proprietà estese della stringa di connessione.
File inclusi nell'esempio
Il file ExcelADO.exe contiene un progetto EXE standard di Visual
Basic, pagine ASP (Active Server Pages), cartelle di lavoro Excel 97 ed Excel
2000 che fungono da modelli, nonché un database Microsoft Access 2000. I file
inclusi sono i seguenti:
File di progetto EXE standard di Visual Basic- ExcelADO.vbp
- Form1.frm
- Form1.frx
Pagine ASPCartelle di lavoro di Microsoft Excel- OrdersTemplate.xls
- EmpDataTemplate.xls
- ProductsTemplate.xls
- SourceData.xls
Database di Microsoft AccessCome utilizzare l'esempio
Estrarre il contenuto del file con estensione exe in una
cartella.
Per utilizzare il progetto Visual Basic:
- In Visual Basic, aprire il file ExcelADO.vbp.
- Selezionare Riferimenti dal menu Progetto, quindi impostare i riferimenti su Microsoft ADO Ext. for DDL and Security e Libreria Microsoft ActiveX Data Objects. Questo codice di esempio funziona con ADO 2.5 e ADO 2.6,
selezionare quindi la versione appropriata per il computer in uso.
- Premere F5 per eseguire il programma. Viene visualizzato un
modulo per la dimostrazione.
- Fare clic su Esempio 1. Questo esempio consente di creare una copia di
OrdersTemplate.xls. Viene quindi utilizzato ADO per stabilire una connessione
alla cartella di lavoro e viene aperto un Recordset nella tabella che rappresenta un intervallo definito della
cartella di lavoro. Il nome dell'intervallo è Orders_Table. Vengono utilizzati i metodi AddNew/Update ADO per aggiungere record, o righe, a un intervallo definito
della cartella di lavoro. Al termine dell'aggiunta di righe, la Connessione ADO viene chiusa e la cartella di lavoro viene visualizzata in
Microsoft Excel. Per effettuare questa operazione, attenersi alla seguente
procedura:
- Scegliere Nomi dal menu Inserisci di Excel, quindi selezionare Definisci.
- Nell'elenco dei nomi definiti, selezionare Orders_Table. Notare che il nome definito ora include i nuovi record aggiunti.
Il nome definito viene utilizzato in combinazione con la funzione OFFSET di
Excel per calcolare il totale dei dati aggiunti al foglio di lavoro.
- Chiudere Microsoft Excel e tornare all'applicazione
Visual Basic.
- Fare clic su Esempio 2. Questo esempio consente di creare una copia di
EmpDataTemplate.xls. Viene utilizzato ADO per stabilire una connessione a una
cartella di lavoro e il metodo Execute della connessione ADO per inserire dati (INSERT INTO in SQL)
nella cartella di lavoro. I dati vengono aggiunti a intervalli definiti (o
tabelle) della cartella di lavoro. Al termine del trasferimento dei dati, la
connessione viene chiusa e la cartella di lavoro risultante viene visualizzata
in Excel. Dopo aver esaminato la cartella di lavoro, chiudere Microsoft Excel e
tornare all'applicazione Visual Basic.
- Fare clic su Esempio 3. Questo esempio consente di creare una copia di
ProductsTemplate.xls. Viene utilizzata la libreria oggetti Microsoft ADO
Extensions 2.1 for DDL and Security (ADOX) per aggiungere una nuova tabella, o
un nuovo foglio di lavoro, alla cartella di lavoro. Si ottiene quindi un Recordset ADO per la nuova tabella e i dati vengono aggiunti utilizzando i
metodi AddNew/Update. Al termine dell'aggiunta di righe, la Connessione ADO viene chiusa e la cartella di lavoro viene visualizzata in
Microsoft Excel. La cartella di lavoro contiene il codice della macro VBA
(Visual Basic for Applications) nell'evento Apri per la cartella di lavoro. La macro viene eseguita quando viene
aperta la cartella di lavoro. Se il nuovo foglio di lavoro "Prodotti" esiste
nella cartella di lavoro, il codice della macro consentirà la formattazione del
foglio di lavoro, per essere poi eliminato. Questa tecnica consente allo
sviluppatore Web di spostare codice di formattazione dal server Web al client.
Un'applicazione Web può trasmettere una cartella di lavoro formattata
contenente dati al client e consente l'esecuzione a livello di client del
codice della macro per l'applicazione di formattazione "condizionale" che
potrebbe non essere possibile in un modello isolato.
NOTA: per esaminare il codice della macro, visualizzare il modulo ThisWorkbook in VBAProject di ProductsTemplate.xls.
- Fare clic su Esempio 4. Questo esempio produce gli stessi risultati dell'esempio 1 ma la
tecnica utilizzata per il trasferimento dei dati è leggermente differente.
Nell'esempio 1, i record, o righe, vengono aggiunti al foglio di lavoro uno
alla volta. L'esempio 4 aggiunge i record in blocco associando la tabella di
Excel a un database di Access ed eseguendo una query di accodamento (o INSERT
INTO..SELECT FROM) per accodare i record di una tabella nella tabella di Access
alla tabella di Excel. Al termine del trasferimento viene annullata
l'associazione della tabella di Excel dal database di Access e la cartella di
lavoro risultante viene visualizzata in Excel. Chiudere Microsoft Excel e
tornare all'applicazione Visual Basic.
- L'ultimo esempio illustra come leggere dati da una cartella
di lavoro di Excel. Nell'elenco a discesa selezionare tabella, quindi scegliere Esempio 5. La finestra di controllo immediato visualizza il contenuto della
tabella selezionata. Se si seleziona un intero foglio di lavoro ("Foglio1$" o
"Foglio2$") per la tabella, la finestra di controllo immediato visualizzerà il
contenuto dell'intervallo utilizzato per tale foglio di lavoro. Notare che
l'intervallo utilizzato non inizia necessariamente alla riga 1, colonna 1 del
foglio di lavoro. L'intervallo utilizzato inizia nella cella in alto a sinistra
del foglio di lavoro contenente i dati.
Se si seleziona un indirizzo
intervallo specifico o un intervallo definito, la finestra di controllo
immediato visualizzerà solo il contenuto di tale intervallo del foglio di
lavoro.
Per utilizzare le pagine ASP:
- Creare una nuova cartella denominata ExcelADO nella home directory del server Web. Notare che il percorso
predefinito della home directory è C:\InetPut\WWWRoot.
- Copiare i file seguenti nella cartella creata durante il
passaggio precedente:
- EmpData.asp
- Orders.asp
- Data.mdb
- EmpDataTemplate.xls
- OrdersTemplate.xls
- Gli script ASP di questo esempio consentono di creare copie
dei modelli cartelle di lavoro con il metodo Copy di FileSystemObject. Per poter utilizzare il metodo Copy, il client che accede allo script deve disporre dell'accesso in
scrittura alla cartella contenente la pagina ASP.
- Passare a Orders.asp, vale a dire,
http://YourServer/ExcelADO/Orders.ASP, e notare che il browser visualizza una
cartella di lavoro di Excel simile a quella dell'esempio 1 dell'applicazione Visual Basic.
- Passare a EmpData.asp, vale a dire,
http://YourServer/ExcelADO/EmpData.ASP, e notare che il browser visualizza una
cartella di lavoro di Excel simile a quella dell'esempio 2 dell'applicazione Visual Basic.
(c) Microsoft Corporation 2000, Tutti i diritti riservati. Con
il contributo di Lori B. Turner, Microsoft Corporation.
Per ulteriori informazioni, fare
clic sui numeri degli articoli della Microsoft Knowledge Base riportati di
seguito:
195951
(http://support.microsoft.com/kb/195951/
)
HOW TO: Interrogazione e aggiornamento dei dati di Excel mediante la tecnologia ADO da una pagina ASP
194124
(http://support.microsoft.com/kb/194124/
)
PRB: Restituzione di valori NULL utilizzando il metodo DAO OpenRecordset in Excel
193998
(http://support.microsoft.com/kb/193998/
)
HOW TO: Lettura e visualizzazione di dati binari in ASP
247412
(http://support.microsoft.com/kb/247412/
)
INFO: Metodi per il trasferimento di dati da Visual Basic a Excel
257819
(http://support.microsoft.com/kb/257819/
)
HOW TO: Utilizzare ADO con dati di Excel da Visual Basic o VBA
Identificativo articolo: 278973 - Ultima modifica: venerdì 15 giugno 2007 - Revisione: 6.0
Le informazioni in questo articolo si applicano a
- Microsoft Excel 2000 Standard Edition
- Microsoft ActiveX Data Objects 2.5
- Microsoft ActiveX Data Objects 2.6
- Microsoft Visual Basic 6.0 Professional Edition
- Microsoft Visual Basic 6.0 Enterprise Edition
- Microsoft Active Server Pages 4.0
| kbdownload kbdownload kbautomation kbfile kbprogramming KB278973 |
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.