2017-10-04 9 views
0

code VBA Mon est censé transférer mon requête dans MS Access (sans en-tête) enter image description here à cellules K17 sur une feuille de calcul Excel existant nommé Totaux .fichier Excel mis à jour, mais pas de changement: requête Exporter vers Excel sans en-tête

Lorsque j'exécute le module, sous la propriété du fichier Excel, la dernière modification a été mise à jour lorsque j'ai exécuté le module. Mais je ne vois pas ma requête sur la feuille de calcul Excel.

Tout conseil sur mon code sera très apprécié. Merci beaucoup!

Sub TransToXL() 

    Dim xlApp As Excel.Application 
    Dim xlWB As Excel.Workbook 
    Dim xlWS As Excel.Worksheet 
    Dim acRng As Variant 
    Dim xlRow As Integer 

    Dim qry As QueryDef 
    Dim rst As Recordset 
    Set xlApp = New Excel.Application 
    Set xlWB = xlApp.Workbooks.Open("C:\Users\MyName\Desktop\August 2017.xlsx") 
    Set xlWS = xlWB.Worksheets("Totals") 

    xlRow = (xlWS.Columns("K").End(xlDown).Row) 

    Set qry = CurrentDb.QueryDefs("DollarsSold") 
    Set rst = qry.OpenRecordset 

    Dim c As Integer 
    c = 11 
    xlRow = xlRow + 16 

    Do Until rst.EOF 
     For Each acRng In rst.Fields 
      xlWS.Cells(xlRow, c).Formula = acRng 
      c = c + 1 
     Next acRng 
     xlRow = xlRow + 1 
     c = 1 
     rst.MoveNext 
     If xlRow > 25 Then GoTo rq_Exit 
    Loop 

rq_Exit: 
    rst.Close 
    Set rst = Nothing 
    Set xlWS = Nothing 
    xlWB.Close acSaveYes 
    Set xlWB = Nothing 
    xlApp.Quit 
    Set xlApp = Nothing 
    Exit Sub 

End Sub 

La variable c est celui qui stocke le numéro de Colum, dans lequel c = 1 signifie que la colonne A, 11 sera K. Dans ce code, je suis confus au sujet de la façon dont je mets xlRow+16. xlRow+16, et c = 11 ne fait pas référence à K17. Des conseils à ce sujet? Je vous remercie!

+0

Veuillez être plus précis et détaillé: Que voulez-vous réaliser? Qu'est-ce qui ne fonctionne pas? Messages d'erreur? – peakpeak

+0

Excuses que ma question n'était pas si spécifique. Je viens de mettre à jour pour vérifier que les points 'xlWS.Cells' à la cellule K17 @peakpeak –

+0

Quelle est la question? – peakpeak

Répondre

0

Y a-t-il une raison pour laquelle vous utilisez une boucle Do Until? Si le jeu d'enregistrements ne dispose que d'une ligne de données (le total), il semble que vous pouvez supprimer la boucle et il suffit d'utiliser quelque chose comme:

xlWS.Range("K17").Value = rst.Fields(0) 

Ceci apparaît après la ligne « Set rst .. ».