Importer un tableau Access vers Excel avec VBA (images et code)
Qu'est-ce que c'est ?Ce code VBA vous permet de télécharger ou d'importer Accès Les données d'un tableau ou d'une requête sont transférées vers Excel en un seul clic.Pourquoi ?Vous pouvez importer des données de tables Access dans Excel sans même ouvrir la base de données Access.Comment importer des données de tableaux Access dans Excel
Étape 1: Ouvrez le classeur Excel et accédez au générateur de code VBA (Alt + F11) et ouvrez un nouveau module.Étape 2: Copiez et collez le code ci-dessous.
Sous importAccessdata()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sQRY As String
Dim strFilePath As String
strFilePath = "C:\NDatabaseFolder\NmyDB.accdb" 'Remplacez 'DatabaseFolder' et 'myDB.accdb' par le chemin d'accès et le nom de votre base de données.
Set cnn = Nouvelle connexion ADODB
Set rs = New ADODB.Recordset
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0 ;" & _
"Data Source=" & strFilePath & " ;"
sQRY = "SELECT * FROM tblData" 'Remplacez 'tblData' par le nom de la table de votre base de données Access ou par le nom de la requête à partir de laquelle vous souhaitez télécharger les données.
rs.CursorLocation = adUseClient
rs.Open sQRY, cnn, adOpenStatic, adLockReadOnly
Application.ScreenUpdating = False
Sheet1.Range("A1").CopyFromRecordset rs
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
Exit Sub
End Sub
Étape 3: Cliquez sur le bouton Exécuter ou sur F5 (vous pouvez également insérer un bouton/une forme dans la feuille Excel, puis cliquer avec le bouton droit de la souris et assigner cette macro pour qu'elle s'exécute à chaque fois).
Les enregistrements de la base de données Access ont été téléchargés avec succès dans Excel. Ouvrez votre classeur Excel et vérifiez les données.
Remarque : Assurez-vous que l'option "Microsoft ActiveX Data Objects Library" est activée dans l'écran d'accueil. Outils – Références (le numéro utilise la dernière version [6.1 au moment de la publication de cet article]).
Épingle
Je suis sûr que vous travaillez sur de nombreuses données Excel, MS Access et VBA. Fortement Nous vous recommandons de vous joindre à l'Ultimate Excel VBA Userform avec Access Database ! C'est un investissement qui en vaut la peine ! FAITES-LE MAINTENANT !
Construisez votre propre programme du monde réel, apprenez le vrai Excel VBA (Macros), dépassez les limites d'Excel avec un projet complet.
8 réponses
Je souhaite exporter les enregistrements d'une base de données Access vers Excel en utilisant le bouton de commande dans vb6.0. Veuillez m'envoyer le code complet de vb6.0.
J'ai la feuille 1 sur mon Excel mais j'obtiens une erreur d'exécution 424 sur la macro à l'étape suivante, pourquoi ?
Sheet1.Range("A1").CopyFromRecordset rs
Bonjour, je voulais vérifier si je gardais ma base de données Access dans un lecteur partagé et si je distribuais cette macro excel dans mon organisation, est-ce que cela fonctionnerait ? Je veux que ma macro excel lise certaines valeurs de cette base de données Access et mette à jour certaines variables à l'ouverture d'excel.
Si Access ne fonctionne pas, puis-je utiliser un autre fichier Excel conservé sur le disque de l'organisation et y accéder au lieu de la base de données ? J'ai essayé avec la méthode d'ouverture de classeur dans ma macro de lire mon excel onedrive qui est partagé par tous dans mon entreprise mais cela n'a pas fonctionné.
Erreur de compilation dans les lignes 5, 8, 9...
J'ai fini par le faire.
J'utilise 2 variables (textbox1 comme valeur 'currency, format R$0.000,00' et textbox2 comme 'date', format mm/dd/yyyy).
Code ↓
'================================================== ===|
'========================================== Kauê Vaz==|
'================================================== ===|
Option explicite
Cliquez sur Outils, Références et sélectionnez
' Bibliothèque Microsoft ActiveX Data Objects 2.0
Sub getDataFromAccess(strValue, strDate)
Dim DBFullName As String
Dim Connect As String, Source As String
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim Col As Integer
Dim mySQLVariable As String
Dim mySQLVariable_1 As String
Dim strSQL As String
mySQLVariable = strValue 'Valeur de la zone de texte 1 (format monétaire R$0.000,00)
mySQLVariable_1 = strDate 'Valeur de la zone de texte 2 (format de la date mm/jj/aaaa)
Code SQL
strSQL = "SELECT * FROM tblDatabase WHERE "
strSQL = strSQL & " [Valeur] = '" & (mySQLVariable) & "' et " ".
strSQL = strSQL & " [Date] = '" & (mySQLVariable_1) & "' "
' Base de données, sélectionnez votre accès à la base de données
DBFullName = "C:³Users³Desktop³Databases³BD_PaynotProcess³bd_PaynotProcess.accdb" (nom complet de la base de données)
' Ouvrir la connexion
Set Connection = New ADODB.Connection
Connect = "Provider=Microsoft.ACE.OLEDB.12.0 ;"
Connect = Connect & "Data Source=" & DBFullName & " ;"
Connection.Open ConnectionString:=Connect
' Création d'un jeu d'enregistrements
Set Recordset = New ADODB.Recordset
Avec jeu d'enregistrements
' Recherche de valeurs à l'aide de la variable de code SQL strSQL
Source = strSQL
Open Source:=Source, ActiveConnection:=Connection
Importation de colonnes de la base de données.
Pour Col = 0 à Recordset.Fields.Count - 1
Range("A5").Offset(0, Col).Value = Recordset.Fields(Col).Name
Suivant
Importation de lignes de la base de données.
Range("A5").Offset(1, 0).CopyFromRecordset Recordset
Terminer par
Set Recordset = Rien
Connexion.Fermer
Définir la connexion =
ActiveSheet.Columns.AutoFit
Fin du sous-marin
Salutations
Puis-je importer seulement quelques données ? Filtrer par 2 variables ?
Exemple :
X = 13/03
Y = '122315124'
Ne reprendre de la base de données d'accès que les lignes qui contiennent ces variables ?
Cela a fonctionné pour moi. Merci beaucoup !
C'est la meilleure requête que j'ai jamais vue. Pourriez-vous m'aider à ajouter une clause Where dans la déclaration SQL ? J'ai essayé de modifier votre requête mais elle génère une erreur.