[AccessD] Export data from query to Excel

Reuben Cummings reuben at gfconsultants.com
Thu Dec 14 11:00:23 CST 2006


Thanks, Jim.  I would like to have SheetExists and rangeNameExists.

This is something that will benefit me greatly if I keep even half to work I
have now in this field.

Reuben Cummings
GFC, LLC
812.523.1017


> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Hale, Jim
> Sent: Thursday, December 14, 2006 11:19 AM
> To: 'Access Developers discussion and problem solving'
> Subject: Re: [AccessD] Export data from query to Excel
>
>
> Here is a method from a Excel class I wrote. This assumes an instance of
> Excel exists (AppXcel) and uses two functions (SheetExists and
> RangeNameExists)which I can send if you don't have them. If a
> range name is
> supplied it will paste to the range. If no range is supplied it will clear
> the sheet and paste starting in cell A2 (I usually have labels in
> row 1). If
> blPaste is true it doesn't clear the worksheet but pastes the recortset at
> the bottom of the previous paste. This allows multiple queries to
> be pasted
> one after the other to the same sheet. HTH
> Jim Hale
>
> Public Function PasteRecSetExcel(strSheetName As String, _
> rstData As Recordset, Optional blPaste As Boolean = False, Optional
> strWSRange As String) As Boolean
>
> Dim wksUpl As Worksheet, y As Long, lngRetval As Long, blSheet As Boolean,
> blRange As Boolean
> On Error GoTo PROC_ERR
> blSheet = SheetExists(strSheetName)
> blRange = RangeNameExists(strWSRange)
> If strWSRange = "" Then blRange = True
> If rstData.RecordCount = 0 Then
>     MsgBox rstData.Name & " is empty. There are no records to paste ", _
>     vbOKOnly + vbCritical + vbSystemModal + vbDefaultButton1, _
>     "Empty Recordset"
>     PasteRecSetExcel = False
> ElseIf blSheet = False Then
>     MsgBox strSheetName & " doesn't exist.", _
>     vbOKOnly + vbCritical + vbSystemModal + vbDefaultButton1, _
>     "Non-existent Sheet"
>     PasteRecSetExcel = False
> ElseIf blRange = False Then
>     MsgBox strWSRange & " is not a valid range name. No data was
> pasted.", _
>     vbOKOnly + vbCritical + vbSystemModal + vbDefaultButton1, _
>     "Range does not exist"
>     PasteRecSetExcel = False
> Else
>     'Load Data into Excel
>     Set wksUpl = appXcel.Worksheets(strSheetName)
>     If strWSRange = "" Then 'if range name exists use different
> paste method
>         If blPaste = True Then
>             'true means find first empty cell before pasting the recordset
>             y = appXcel.WorksheetFunction.CountA(wksUpl.Range("A:A"))
>             wksUpl.Cells(y + 1, 1).CopyFromRecordset rstData
>         Else
>             'false means clear th sheet and paste the new data
> beginning in
> A2
>             wksUpl.Range("A2:IV65536").ClearContents
>             wksUpl.Range("A2").CopyFromRecordset rstData
>         End If
>     Else
>             wksUpl.Range(strWSRange).ClearContents
>             wksUpl.Range(strWSRange).CopyFromRecordset rstData
>     End If
> PasteRecSetExcel = True
> End If
> PROC_EXIT:
>     If (rstData Is Nothing) = False Then Set rstData = Nothing
>     If (wksUpl Is Nothing) = False Then Set wksUpl = Nothing
>   Exit Function
>
> PROC_ERR:
>     PasteRecSetExcel = False
>     If Err.Number = 1004 Then
>         MsgBox "UseExcel.Class Error: Range " & strWSRange & " does not
> exist.", , _
>         "PasteRecSetExcel Method"
>     Else
>         MsgBox "UseExcel.Class Error: " & Err.Number & ". " &
> Err.Description, , _
>         "PasteRecSetExcel Method"
>     End If
>   Resume PROC_EXIT
>
> End Function
> -----Original Message-----
> From: Reuben Cummings [mailto:reuben at gfconsultants.com]
> Sent: Thursday, December 14, 2006 9:44 AM
> To: AccessD
> Subject: [AccessD] Export data from query to Excel
>
>
> I can't get anything from the archives right now...
>
> Anyone got a nice routine for exporting data from a query to an excel
> spreadsheet?
>
> I have a query that I will change the criteria in to get the specific
> results I need.  I then want to run a routine to export that data to a new
> worksheet.  The query structure will always be the same - just different
> data.
>
> So all I need is a way to export the data while allowing me to create the
> worksheet name at the time of the export.  I have to do this
> about 150 times
> so automation would be nice.
>
> Thanks.
>
> Reuben Cummings
> GFC, LLC
> 812.523.1017
>
> ***********************************************************************
> The information transmitted is intended solely for the individual or
> entity to which it is addressed and may contain confidential and/or
> privileged material. Any review, retransmission, dissemination or
> other use of or taking action in reliance upon this information by
> persons or entities other than the intended recipient is prohibited.
> If you have received this email in error please contact the sender and
> delete the material from any computer. As a recipient of this email,
> you are responsible for screening its contents and the contents of any
> attachments for the presence of viruses. No liability is accepted for
> any damages caused by any virus transmitted by this email.
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>







More information about the AccessD mailing list