2017-10-04 10 views
0

私のVBAコードは(ヘッダなし)MS Accessでの私のクエリを転送することになっている、ヘッダなしでExcelにenter image description here にセルK17合計という名前の既存のExcelスプレッドシート上のExcelの更新されたファイルが、変更なし:エクスポートクエリ

エクセルファイルのプロパティでモジュールを実行すると、最後に変更された時間がモジュールを実行したときに更新されました。しかし、私はExcelスプレッドシートで私のクエリが表示されません。

私のコードに関するアドバイスは高く評価されます。どうもありがとうございます!

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 

変数cが、colum番号を格納するものである、C = 1、カラムA、11はこのコードでは、Kであることを意味する、私はxlRow+16を設定する方法について混乱しています。 xlRow+16であり、c = 11はK17を指していない。これに関するアドバイスは何ですか?ありがとうございました!

+0

もっと具体的で詳細にしてください:あなたは何を達成したいですか?何が働いていないのですか?エラーメッセージ? – peakpeak

+0

私の質問はそれほど具体的ではないことを謝ります。私はちょうど 'xlWS.Cells'がセルK17 @peakpeakにポイントをダブルチェックするように更新しました –

+0

質問は何ですか? – peakpeak

答えて

0

Do Untilループを使用する理由はありますか?レコードセットは、データのみの1行(合計)を持っている場合は、ループを削除し、同じようなものを使用することができますように見えます:

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

これは、「最初に設定..」の行の後に表示されます。