2008-12-17 9 views
1

Je cherche à exporter quelques fichiers dans Excel depuis MS Access en interrogeant une table.Accès: pour exporter des champs vers Excel en fonction d'une requête

Il est comme ça la requête sera

select * from table where field = 0  

Je voudrais boucler la requête jusqu'à ce champ est 9 et je veux enregistrer chaque résultat un nom différent, comme champ1, champ2

Comment cela doit-il être modifié?

strqry = "select * from table where field = 1" 
DoCmd.TransferSpreadsheet acExport, _ 
          acSpreadsheetTypeExcel9, _ 
          "strqry", _ 
          "C:\Reports\Data_Analysis1.xls", _ 
          True 

aussi comment dois-je nommer la première feuille comme field1 et dans la prochaine boucle field2

Répondre

2

Je l'ai finalement obtenu fait de cette façon

For i = 1 To 9 
    CurrentDb.QueryDefs("MyQuery").SQL = "Select * from table Where field = " & i 
    DoCmd.TransferSpreadsheet acExport, _ 
           acSpreadsheetTypeExcel9, _ 
           "MyQuery", _ 
           "C:\Reports\Data_Analysis.xls", _ 
           True, _ 
           "Field_" & i 
Next i 
+0

Je suis content que vous ayez trouvé quelque chose qui fonctionne. Le négatif de le faire de cette façon est que vous finissez par mettre à jour un objet de requête à la volée. S'il est utilisé uniquement à un endroit, OK, mais s'il est utilisé ailleurs, il est très déroutant pour les développeurs ultérieurs (en particulier s'ils mettent à jour la requête, et découvrent par la suite qu'il a été rétabli) . Été là, fait cela. – BIBD

1

Speicify le nom de la feuille dans le champ « Range » du commandement TransferSpreadsheet.

DoCmd.TransferSpreadsheet acExport, _ 
          acSpreadsheetTypeExcel9, _ 
          "tablename", _ 
          "filename.xls", _ 
          True, _ 
          "sheetname" 
2

Alors, vraiment ce que vous voulez est quelque chose comme ça

dim i as integer 

for i = 1 to 9 
    strqry = "select * from table where field = " & i 
    DoCmd.TransferSpreadsheet acExport, _ 
           acSpreadsheetTypeExcel9, _ 
           strqry, _ 
           "filename.xls", _ 
           True, _ 
           "sheetname_" & i 
next i 
+0

: D Vous avez copié ma ligne TransferSpredsheet. ;) – LeppyR64

+0

Mais avec cela, les résultats de la requête ne seront pas exportés à droite? Je veux dire que le nom de la table donné dans docmd sera exporté. Mais où la requête est-elle exécutée? Je suis désolé si je manque quelque chose – tksy

+0

@Jason - Oui. Pensez-y simplement en embrassant et en prolongeant. – BIBD

Questions connexes