Il existe de nombreuses façons d'obtenir des données provenant de sources externes dans une feuille de calcul
Vous pouvez également obtenir des données depuis Internet, des fichiers texte ou d'autres Excel ou
Nous avons donc besoin d'une connexion à une base de données (variable varConn dans la macro ci-dessous) et requête SQL (variable varSQL ) pour automatiser la récupération des données de la base de données pour le rapport. Dans l'exemple ci-dessous, il y a requête SQL , qui reçoit les données d'une petite base de données dans MS Access.
Cliquez sur charger la base de données
Le fichier MS Access ressemblera à ceci :
Écrivons notre macro qui s'exécutera requête SQL .
Ouvrir le menu Service - Macro - Editeur Visual Basic , insérez le nouveau module (menu Insert - Module ) et copiez-y le texte de la macro :
Sub SQLQuery_1() 'moonexcel.com.ua Dim varConn As String Dim varSQL As String Range("A1").CurrentRegion.ClearContents varConn = "ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)}" varSQL = "SELECT Month, Product, City FROM Sumproduct" With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1")) .CommandText = varSQL .Refresh BackgroundQuery:=False End With End Sub
Cliquez sur Enregistrer et revenez à Excel. Choisissez dans le menu Affichage - Macros (Alt+F8) le nom de notre macro " SQLQuery_1 ". Une boîte de dialogue apparaîtra, appuyez dessus Base de données... , recherchez notre fichier Access et cliquez sur
Nous pouvons maintenant voir que notre requête macro a extrait les colonnes
De même, nous pouvons obtenir des données à partir d'un fichier Excel classique comme si elles provenaient d'une base de données. Pour cela, le code de notre macro doit être légèrement réécrit et le pilote de connexion modifié d'Access à Excel.
Nous exportons le tableau
Sub SQLQuery_2() 'moonexcel.com.ua Dim varConn As String Dim varSQL As String Range("A1").CurrentRegion.ClearContents varConn = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}" varSQL = "SELECT Month, Product, City FROM Sumproduct" With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1")) .CommandText = varSQL .Refresh BackgroundQuery:=False End With End Sub
Une fenêtre apparaîtra dans laquelle nous pourrons sélectionner notre fichier Excel (doit s'appeler