Accès + VBA + SQL - Faire à l'exportation de plusieurs requêtes dans un Classeur excel, mais, plusieurs Feuille de calcul en utilisant les critères à partir d'une table
J'ai besoin d'aide avec l'exportation de plusieurs requêtes dans un Classeur excel, mais, plusieurs Feuille de calcul? en utilisant les critères d'un tableau de MS Access VBA
Ci-JOINT DB pour Référence.
Nom de la Table: Tbl_Final (colonnes ci-dessous)
- Système
- ID utilisateur
- Type D'Utilisateur
- Statut
- Poste
Fondée sur les valeurs dans la colonne "Système" dans le tableau "Tbl_Final" (requête SQL ci-dessous), j'ai besoin de créer des fichiers excel et de les exporter vers un dossier.
Exemple:
SÉLECTIONNEZ TBL_FINAL.Système, TBL_FINAL.[ID utilisateur], TBL_FINAL.[Type d'utilisateur], TBL_FINAL.Statut, TBL_FINAL.[Poste De Travail]
DE TBL_FINAL
WHERE (((TBL_FINAL.Système d')="OS/400"));
SELECT TBL_FINAL.System, TBL_FINAL.[User ID], TBL_FINAL.[User Type], TBL_FINAL.Status, TBL_FINAL.[Job Position]
FROM TBL_FINAL
WHERE (((TBL_FINAL.System)="Tab"));
Après recherche sur google, j'ai réussi à trouver un code qui correspond au critère. Mais encountring quelques obstacles 🙁
Demande de l'aide !!
===================================
Option Compare Database
Private Sub Command1_Click()
Dim strSQL As String
Dim dbs As Database
Dim qdf As QueryDef
strQry = "REPORT_QUERY"
Set dbs = CurrentDb
Set qdf = dbs.CreateQueryDef(strQry)
strSQL = "SELECT System, [User ID], [User Type], [Status] FROM TBL_FINAL WHERE System = 'OS/400'"
qdf.SQL = strSQL
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel11, _
strQry, "C:\Program Files\Export\GENERAL_EXPORT.xls", True, _
"Sheet1"
strSQL = "SELECT System, [User ID], [User Type], [Status] FROM TBL_FINAL WHERE System = 'MySys'"
qdf.SQL = strSQL
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel11, _
strQry, "C:\Program Files\Export\GENERAL_EXPORT.xls", True, _
"Sheet2"
DoCmd.DeleteObject acQuery, strQry
End Sub
Vous devez vous connecter pour publier un commentaire.
Le code VBA suivant fonctionne pour moi, la création d'un nouveau classeur Excel (
.xlsx
fichier) contenant plusieurs feuilles de calcul (mySheet1
etmySheet2
):Noter que le nom de la feuille de calcul est tiré du nom de la requête (ou une table) d'être exportés. Si une feuille de calcul avec ce nom n'existe pas dans le fichier Excel, puis il sera ajouté.
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "Table4", "test.xlsx", True DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "Query6", "test.xlsx", True
la création de deux nouvelles feuilles danstest.xlsx
, même si le fichier existe déjà. Les nouvelles feuilles seront nommés en fonction de la requête ou le nom de la table. J'utilise régulièrement pour l'analyse de l'enquête.Sub FolderPicker()
àFunction FolderPicker() As String
et de l'avoir de retour de lapath
valeur. Dans votre code principal nexlsxPath = FolderPicker()
et puis essayez la version révisée de laDoCmd.TransferSpreadsheet
dans votre dernier commentaire. Si vous êtes coincé, puis demander à un nouvelle question.