Results 1 to 2 of 2

Thread: Using CopyFromRecordset to copy to an EXCEL spreadsheet

  1. #1

    Thread Starter
    New Member
    Join Date
    May 2003
    Posts
    4

    Using CopyFromRecordset to copy to an EXCEL spreadsheet

    Hi,
    I am using the CopyFromRecordset method to copy from a recordset to an excel spreadsheet. See code below:

    The problem I am facing is that for every new sheet, it starts copying from the beginning of the recordset! Can anyone help me with this?
    Thanks,
    Hex
    Code:
    Do
        oSheet.Range(rangeCell).CopyFromRecordset rs, 65500
        rs.Move 65500
        If rs.EOF = True Then
            Exit Do
        End If
        subLogCommand "We're at: " & rs.AbsolutePosition
        
        With oSheet.Range("a1").Resize(1, rs.Fields.Count)
            .EntireColumn.AutoFit
            '.EntireColumn.WrapText = True
        End With
        sheetnum = sheetnum + 1
        oBook.Worksheets.Add
            Set oSheet = oBook.Worksheets("Sheet" & sheetnum)
        oSheet.Activate
        Call excelHeader(xlsRowNum, hdgCriteria, oSheet)
    Loop

  2. #2
    Hyperactive Member
    Join Date
    Mar 2002
    Posts
    424
    Probably a bit of overkill but this should give you some useful tips for working with excel sheets from Access:
    VB Code:
    1. Public Sub ExportDailies()
    2. '_______________________________________________________________
    3. 'Create the Daily Fee Calculation Report in Excel, preformatted by running
    4. 'these four make-table queries and the following code which manipulates
    5. 'the excel object in memory before storing the file.
    6. '_______________________________________________________________
    7. Dim Questions, message
    8. Dim CalcCore As Recordset, CCCount As Recordset, CCTotals As Recordset
    9. Dim CalcEnhance As Recordset, CECount As Recordset, CETotals As Recordset
    10. Dim QCCore As Recordset, QCCCount As Recordset, QCCTotals As Recordset
    11. Dim QCEnhance As Recordset, QCECount As Recordset, QCETotals As Recordset
    12. Dim ForLoop As Integer
    13. Dim fromdate As Date, todate As Date
    14. Dim sei As SHELLEXECUTEINFO
    15. Dim retval As Long
    16. Set Dbase = CurrentDb
    17. DoCmd.SetWarnings False
    18. DoCmd.OpenQuery "qryDailyCalculation - Core Fees (SD)", acViewNormal
    19. DoCmd.OpenQuery "qryDailyCalculation - Enhanced Fees (SD)", acViewNormal
    20. DoCmd.OpenQuery "qryDailyCalculation - QC Core (SD)", acViewNormal
    21. DoCmd.OpenQuery "qryDailyCalculation - QC Enhanced (SD)", acViewNormal
    22. DoCmd.SetWarnings True
    23. retval = SetForegroundWindow(DailyHwnd)
    24. If GeneralFromDate = GeneralToDate Then
    25. Questions = Format(GeneralFromDate, "mmmm dd")
    26. Else
    27. Questions = Format(GeneralFromDate, "mmmm dd") & " to " & Format(GeneralToDate, "mmmm dd")
    28. End If
    29. Set CalcCore = Dbase.OpenRecordset("tblDailyCalculation - Core Fees", dbOpenSnapshot)
    30. Set CCCount = Dbase.OpenRecordset("SELECT Count([tblDailyCalculation - Core Fees].AC) AS CountOfAC FROM [tblDailyCalculation - Core Fees];")
    31. Set CCTotals = Dbase.OpenRecordset("SELECT Sum([tblDailyCalculation - Core Fees].Core) AS SumOfCore, Sum([tblDailyCalculation - Core Fees].Enhance) AS SumOfEnhance, Sum([tblDailyCalculation - Core Fees].Total) AS SumOfTotal FROM [tblDailyCalculation - Core Fees];")
    32. Set CalcEnhance = Dbase.OpenRecordset("tblDailyCalculation - Enhanced Fees", dbOpenSnapshot)
    33. Set CECount = Dbase.OpenRecordset("SELECT Count([tblDailyCalculation - enhanced fees].AC) AS CountOfAC FROM [tblDailyCalculation - enhanced fees];")
    34. Set CETotals = Dbase.OpenRecordset("SELECT Sum([tblDailyCalculation - enhanced fees].Core) AS SumOfCore, Sum([tblDailyCalculation - enhanced fees].Enhance) AS SumOfEnhance, Sum([tblDailyCalculation - enhanced fees].Total) AS SumOfTotal FROM [tblDailyCalculation - enhanced fees];")
    35. Set QCCore = Dbase.OpenRecordset("tblDailyCalculation - QC Core", dbOpenSnapshot)
    36. Set QCCCount = Dbase.OpenRecordset("SELECT Count([tbldailycalculation - qc core].AC) AS CountOfAC FROM [tbldailycalculation - qc core];")
    37. Set QCCTotals = Dbase.OpenRecordset("SELECT Sum([tbldailycalculation - qc core].Core) AS SumOfCore, Sum([tbldailycalculation - qc core].Enhance) AS SumOfEnhance, Sum([tbldailycalculation - qc core].Total) AS SumOfTotal FROM [tbldailycalculation - qc core];")
    38. Set QCEnhance = Dbase.OpenRecordset("tblDailyCalculation - QC Enhanced", dbOpenSnapshot)
    39. Set QCECount = Dbase.OpenRecordset("SELECT Count([tbldailycalculation - qc enhanced].AC) AS CountOfAC FROM [tbldailycalculation - qc enhanced];")
    40. Set QCETotals = Dbase.OpenRecordset("SELECT Sum([tbldailycalculation - qc enhanced].Core) AS SumOfCore, Sum([tbldailycalculation - qc enhanced].Enhance) AS SumOfEnhance, Sum([tbldailycalculation - qc enhanced].Total) AS SumOfTotal FROM [tbldailycalculation - qc enhanced];")
    41. Dim xls As Excel.Application
    42. Dim xlBook As Excel.Workbook
    43. Set xls = New Excel.Application
    44. Set xlBook = xls.Workbooks.Add
    45. xlBook.Worksheets.Add.Move After:=xlBook.Worksheets(3)
    46. xlBook.Worksheets(1).Range("A5").CopyFromRecordset CalcCore
    47. xlBook.Worksheets(2).Range("A5").CopyFromRecordset CalcEnhance
    48. xlBook.Worksheets(3).Range("A5").CopyFromRecordset QCCore
    49. xlBook.Worksheets(4).Range("A5").CopyFromRecordset QCEnhance
    50.      For ForLoop = 1 To 4
    51.      xlBook.Worksheets(ForLoop).Select
    52.      xlBook.Worksheets(ForLoop).Range("a4") = "AC"
    53.      xlBook.Worksheets(ForLoop).Range("B4") = "AC NAME"
    54.      xlBook.Worksheets(ForLoop).Range("c4") = "CORE"
    55.      xlBook.Worksheets(ForLoop).Range("d4") = "ENHANCED"
    56.      xlBook.Worksheets(ForLoop).Range("e4") = "TOTAL"
    57.      If ForLoop = 1 Then
    58.           xlBook.Worksheets(ForLoop).Range("a2") = CCCount!countofac
    59.           xlBook.Worksheets(ForLoop).Range("c2") = CCTotals!sumofcore
    60.           xlBook.Worksheets(ForLoop).Range("d2") = CCTotals!sumofenhance
    61.           xlBook.Worksheets(ForLoop).Range("e2") = CCTotals!sumoftotal
    62.           xlBook.Worksheets(ForLoop).Range("A1") = "CALCULATION CORE - " & Questions
    63.      ElseIf ForLoop = 2 Then
    64.           xlBook.Worksheets(ForLoop).Range("a2") = CECount!countofac
    65.           xlBook.Worksheets(ForLoop).Range("c2") = CETotals!sumofcore
    66.           xlBook.Worksheets(ForLoop).Range("d2") = CETotals!sumofenhance
    67.           xlBook.Worksheets(ForLoop).Range("e2") = CETotals!sumoftotal
    68.           xlBook.Worksheets(ForLoop).Range("A1") = "CALCULATION ENHANCED - " & Questions
    69.     ElseIf ForLoop = 3 Then
    70.           xlBook.Worksheets(ForLoop).Range("a2") = QCCCount!countofac
    71.           xlBook.Worksheets(ForLoop).Range("c2") = QCCTotals!sumofcore
    72.           xlBook.Worksheets(ForLoop).Range("d2") = QCCTotals!sumofenhance
    73.           xlBook.Worksheets(ForLoop).Range("e2") = QCCTotals!sumoftotal
    74.           xlBook.Worksheets(ForLoop).Range("A1") = "QC CORE - " & Questions
    75.     ElseIf ForLoop = 4 Then
    76.           xlBook.Worksheets(ForLoop).Range("a2") = QCECount!countofac
    77.           xlBook.Worksheets(ForLoop).Range("c2") = QCETotals!sumofcore
    78.           xlBook.Worksheets(ForLoop).Range("d2") = QCETotals!sumofenhance
    79.           xlBook.Worksheets(ForLoop).Range("e2") = QCETotals!sumoftotal
    80.           xlBook.Worksheets(ForLoop).Range("A1") = "QC ENHANCED - " & Questions
    81.     End If
    82.      xlBook.Worksheets(ForLoop).Application.Columns("C:E").NumberFormat = "$#,##0.00_);[Red]($#,##0.00)"
    83.      xlBook.Worksheets(ForLoop).Application.Rows("4:4").HorizontalAlignment = xlCenter
    84.      xlBook.Worksheets(ForLoop).Application.Range("A1").Font.Name = "Times New Roman"
    85.      xlBook.Worksheets(ForLoop).Application.Range("A1").Font.Size = 16
    86.      xlBook.Worksheets(ForLoop).Application.Range("A1").Font.Bold = True
    87.      xlBook.Worksheets(ForLoop).Application.Range("A1:E1").HorizontalAlignment = xlCenter
    88.      xlBook.Worksheets(ForLoop).Application.Range("A1:E1").Merge
    89.      xlBook.Worksheets(ForLoop).Application.Range("A3").Select
    90.      xlBook.Worksheets(ForLoop).Application.ActiveWindow.FreezePanes = True
    91.      xlBook.Worksheets(ForLoop).Application.Columns("A:E").EntireColumn.AutoFit
    92.     Next
    93. xlBook.Worksheets.Application.Sheets("sheet1").Select
    94. xlBook.SaveAs "S:\Tech Support\Support Forms\Daily Fee Calculations\" & Questions & " Daily Fee Calculations.xls"
    95. xlBook.Close False
    96. xls.Quit
    97. Set xlBook = Nothing
    98. Set xls = Nothing
    99. retval = SetForegroundWindow(DailyHwnd)
    100. message = MsgBox("The report is finished and is located at:" & vbCr _
    101.                               & "S:\Tech Support\Support Forms\Daily Fee Calculations\" & vbCr _
    102.                               & "and is called " & Questions & " Daily Fee Calculations.xls", vbInformation, "Task Completed")
    103. message = MsgBox("Do you wish to open this file now?", vbYesNo, "Open File")
    104. If message = vbYes Then
    105.      With sei
    106.           .cbSize = Len(sei)
    107.           .fMask = SEE_MASK_NOCLOSEPROCESS
    108.           .hWnd = Application.hWndAccessApp
    109.           .lpVerb = "open"
    110.           .lpFile = "S:\Tech Support\Support Forms\Daily Fee Calculations\" & Questions & " Daily Fee Calculations.xls"
    111.           .lpParameters = ""
    112.           .lpDirectory = "h:\Document\"
    113.           .nShow = SW_SHOWNORMAL
    114.      End With
    115.      retval = ShellExecuteEx(sei)
    116. End If
    117. End Sub

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width