Identificativo articolo: 247412 - Ultima modifica: venerdì 23 marzo 2007 - Revisione: 8.0 Metodi per il trasferimento di dati da Visual Basic a ExcelSommario In questo articolo vengono illustrati diversi metodi per il
trasferimento di dati dall'applicazione Microsoft Visual Basic a Microsoft
Excel. Vengono inoltre illustrati i vantaggi e gli svantaggi di ciascun metodo
per consentire di scegliere la soluzione più adatta alle esigenze
specifiche. Informazioni L'approccio più utilizzato per il trasferimento di dati in
una cartella di lavoro di Excel è basato sull'automazione. L'automazione
consente di specificare con la massima flessibilità la posizione dei dati nella
cartella di lavoro, nonché di formattare la cartella di lavoro e definire
diverse impostazioni in fase di esecuzione. Con l'automazione è possibile
utilizzare diversi approcci per il trasferimento dei dati:
Nota In Microsoft Office Excel 2007 è possibile utilizzare il nuovo formato di file Cartella di lavoro di Excel 2007 (*.xlsx) per il salvataggio delle cartelle di lavoro. A tale scopo, individuare la riga di codice seguente negli esempi riportati di seguito: Utilizzo dell'automazione per il trasferimento di dati cella per cellaCon l'automazione, è possibile trasferire dati in un foglio di calcolo una cella alla volta:216400
(http://support.microsoft.com/kb/216400/
)
Blocco dell'applicazione client con Windows 95/98 a causa dell'automazione COM tra processi
Anche in questo caso il trasferimento di dati cella
per cella è accettabile solo per quantità ridotte di dati. Se è necessario
trasferire in Excel quantità elevate di dati, valutare la possibilità di
adottare una delle soluzioni descritte di seguito.Per ulteriore codice di esempio relativo all'automazione di Excel, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito: 219151
(http://support.microsoft.com/kb/219151/
)
Automazione di Microsoft Excel da Visual Basic
Utilizzo dell'automazione per trasferire matrici di dati in un intervallo di un foglio di lavoroÈ possibile trasferire una matrice di dati in un intervallo di celle contemporaneamente:Utilizzo dell'automazione per trasferire un recordset ADO in un intervallo di un foglio di lavoroIn Excel 2000 è stato introdotto il metodo CopyFromRecordset che consente di trasferire un recordset ADO (o DAO) in un intervallo di un foglio di lavoro. Nel codice riportato di seguito viene illustrato come automatizzare Excel 2000, Excel 2002 o Office Excel 2003 per il trasferimento del contenuto della tabella Orders nel database di esempio Northwind mediante il metodo CopyFromRecordset.Per ulteriori informazioni sull'utilizzo di ADO e del metodo CopyFromRecordset, vedere il seguente articolo della Microsoft Knowledge Base: 246335
(http://support.microsoft.com/kb/246335/
)
Trasferimento di dati da un recordset ADO in Excel tramite l'automazione
Utilizzo dell'automazione per creare un oggetto QueryTable in un foglio di lavoroUn oggetto QueryTable rappresenta una tabella creata in base ai dati restituiti da un'origine dati esterna. Quando si automatizza Microsoft Excel, è possibile creare un oggetto QueryTable fornendo una stringa di connessione a un'origine dati OLEDB o ODBC unitamente a una stringa SQL. Il recordset viene generato in Excel e inserito nel foglio di lavoro nella posizione specificata. L'utilizzo di oggetti QueryTable presenta diversi vantaggi rispetto al metodo CopyFromRecordset:
Utilizzo degli AppuntiÈ possibile utilizzare gli Appunti di Windows per trasferire dati in un foglio di lavoro. Per incollare i dati in più celle di un foglio di lavoro, è possibile copiare una stringa in cui le colonne sono delimitate da tabulazioni e righe delimitate da ritorni a capo. Nel codice riportato di seguito viene illustrato l'utilizzo degli Appunti di Windows in Visual Basic per trasferire dati in Excel:Creazione di un file di testo delimitato analizzabile in Excel in righe e colonneIn Excel è possibile aprire file delimitati da tabulazioni o da virgole e analizzare correttamente i dati nelle celle. Questa funzione può essere utilizzata per trasferire elevate quantità di dati in un foglio di lavoro servendosi dell'automazione in modo limitato. Questo approccio può rivelarsi adeguato per un'applicazione client-server perché è possibile generare il file di testo sul lato client. È quindi possibile aprire il file di testo dal client, utilizzando l'automazione quando necessario.Nell'esempio di codice riportato di seguito viene illustrato come creare un file di testo delimitato da virgole da un recordset ADO: Nell'esempio di codice precedente Excel è stato avviato tramite l'istruzione Shell e come argomento della riga di comando è stato utilizzato il nome del file. Non è quindi stata utilizzata l'automazione. Tuttavia, se si desidera, è possibile utilizzare in modo limitato l'automazione per aprire il file di testo e salvarlo nel formato della cartella di lavoro di Excel: 172267
(http://support.microsoft.com/kb/172267/
)
Utilizzo di RECEDIT.VBP per illustrare operazioni di I/O sui file in Visual Basic
Trasferimento dei dati in un foglio di lavoro tramite ADOÈ possibile utilizzare il provider Microsoft Jet OLE DB per aggiungere record a una tabella in una cartella di lavoro di Excel esistente. Una "tabella" in Excel corrisponde in pratica a un intervallo di celle che può essere caratterizzato da un nome definito. La prima riga dell'intervallo deve contenere le intestazioni (o nomi di campo) e tutte le altre righe dell'intervallo contengono i record. Nella procedura seguente viene illustrato come creare una cartella di lavoro con una tabella vuota denominata MyTable.Excel 97, Excel 2000 ed Excel 2003
Excel 2007
Si noti che quando si aggiunge un record a una cella o a celle del foglio di lavoro, gli eventuali dati presenti in tali celle vengono sovrascritti. Ciò significa che le righe del foglio di lavoro non vengono spostate verso il basso quando si aggiungono nuovi record. È opportuno tenere presente questo comportamento quando si progetta il layout dei dati dei fogli di lavoro. Nota Il metodo per aggiornare i dati in un foglio di lavoro di Excel tramite ADO o DAO non può essere utilizzato in ambiente Visual Basic, Application Edition in Access in seguito all'installazione di Office 2003 Service Pack 2 (SP2) o dell'aggiornamento per Access 2002 incluso nell'articolo 904018 della Microsoft Knowledge Base. È invece utilizzabile in ambiente Visual Basic, Application Edition da altre applicazioni Office, ad esempio Word, Excel e Outlook. Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito: 904953
(http://support.microsoft.com/kb/904953/
)
Impossibile modificare, aggiungere o eliminare dati in tabelle collegate a una cartella di lavoro di Excel in Office Access 2007, in Office Access 2003 o in Access 2002
904018
(http://support.microsoft.com/kb/904018/
)
Descrizione dell'aggiornamento per Access 2002 del 18 ottobre 2005
Per ulteriori informazioni sull'utilizzo di ADO per accedere a una cartella di lavoro di Excel, vedere i seguenti articoli della Microsoft Knowledge Base: 195951
(http://support.microsoft.com/kb/195951/
)
Interrogazione e aggiornamento dei dati di Excel mediante la tecnologia ADO da una pagina ASP
Utilizzo di DDE per il trasferimento di dati in ExcelDDE rappresenta uno strumento alternativo all'automazione per comunicare con Excel e trasferire dati. Con l'avvento dell'automazione e del componente COM, DDE non rappresenta più il metodo preferito per comunicare con altre applicazioni e deve essere utilizzato solo se non sono disponibili altre soluzioni.Per trasferire dati in Excel tramite DDE, è possibile:
Nota In Excel 2007 è possibile utilizzare il nuovo formato di file xlsx per salvare le cartelle di lavoro. Assicurarsi di aggiornare il nome file nell'esempio di codice seguente. Nota In questo esempio Text1 rappresenta un controllo Text Box in un form Visual Basic: Quando si utilizza LinkExecute per chiedere l'esecuzione di un comando in Excel, per la specifica del comando è necessario utilizzare la sintassi XLM (Excel Macro Language). La documentazione relativa a XLM non è inclusa con Excel 97 e versioni successive. Per ulteriori informazioni su come ottenere la documentazione relativa a XLM, vedere il seguente articolo della Microsoft Knowledge Base: 143466
(http://support.microsoft.com/kb/143466/
)
File Macro97.exe disponibile nei servizi in linea
DDE non costituisce la soluzione consigliata per
comunicare con Excel. L'automazione assicura massima flessibilità e consente di
accedere più agevolmente alle nuove funzionalità disponibili in
Excel.Riferimenti Per ulteriori informazioni, fare clic sul numero
dell'articolo della Microsoft Knowledge Base riportato di seguito: 306022
(http://support.microsoft.com/kb/306022/
)
Trasferimento di dati a una cartella di lavoro di Excel tramite Visual Basic .NET
Le informazioni in questo articolo si applicano a
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. | Traduzione articoli
|
Torna all'inizio
