John Ruff
papparuff at comcast.net
Fri Jan 6 13:08:01 CST 2006
And here's some more code (using the CopyFromRecordset property.
Public Function CreateSpreadsheet() as boolean
' This routine permits you to quickly save data in a recordset to a
spreadsheet.
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim dbsTemp As Database
Dim rstTemp As Recordset
Dim bolIsExcelRunning As Boolean
Dim strFileName as string
Dim strDirectory as string
Dim intCount as integer
Dim intColCount as integer
Set dbsTemp = CurrentDb
Set rstTemp =
dbsTemp.OpenRecordset("qSel_AgingReport_Summary_Spreadsheet_Final")
' This is the directory where the spreadsheet will be saved to
strDirectory="N:\COMMON\MSSP\AGING REPORT\"
' This is the File Name
strFileName="MySpreadsheet.xls"
' Determine if Excel is open
bolIsExcelRunning = IsExcelRunning()
' Create a Worksheet Object
If bolIsExcelRunning Then
Set xlApp = GetObject(, "Excel.Application")
Else
Set xlApp = CreateObject("Excel.Application")
End If
' Create a new workbook
Set xlBook = xlApp.Workbooks.Add()
' Provide a name for the worksheet
For Each xlSheet In xlBook.Worksheets
If xlSheet.Name = "Sheet1" Then
xlSheet.Name = "Aging Report Summary"
End If
If xlSheet.Name = "Sheet2" Then
xlSheet.Name = "Aging Report Detail"
End If
Next
Set xlSheet = xlBook.Worksheets("Aging Report Summary")
xlSheet.Visible = True
xlSheet.Activate
intColCount = rstTemp.Fields.Count
' Place Column Headers onto the spreadsheet starting in cell A1
With xlSheet.Range("A1")
For intCol = 0 To intColCount - 1
.Cells(1, intCol + 1).Value = rstTemp.Fields(intCol).Name
Next intCol
End With
' Copy the recordset to the spreadsheet starting in cell A2
xlSheet.Range("A2").CopyFromRecordset rstTemp
' Saving and quitting
' Save the file
xlBook.Close savechanges:=True, FileName:=strDirectory & strFileName
' Quit
If Not bolIsExcelRunning Then
xlApp.Quit
End If
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
' Reset error object to 0
Err = 0
End Function
Public Function IsExcelRunning() As Boolean
' This function determines if Excel is running
Dim xlApp As Excel.Application
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
IsExcelRunning = (Err.Number = 0)
Set xlApp = Nothing
Err.Clear
End Function
John V. Ruff - The Eternal Optimist :-)
"Commit to the Lord whatever you do,
and your plans will succeed." Proverbs 16:3
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of John Colby
Sent: Friday, January 06, 2006 9:47 AM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Can't write to an Excel spreadsheet
Oh yea, I remember. What a PITA. That throws a major wrench in the works.
I was hoping to open a predefined spreadsheet, with locked columns, named
ranges etc., then just export data to it, attach to an email and send.
John W. Colby
www.ColbyConsulting.com
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Heenan, Lambert
Sent: Friday, January 06, 2006 12:41 PM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Can't write to an Excel spreadsheet
There were a couple of threads on this a few weeks ago.
Apparently M$ lost some law suit and the end result was they had to disable
the ability of Access to update Excel. You can still export to Excel, but
that's it - I think.
Lambert
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of John Colby
Sent: Friday, January 06, 2006 12:30 PM
To: 'Access Developers discussion and problem solving'
Subject: [AccessD] Can't write to an Excel spreadsheet
I created a spreadsheet in a workbook. Placed text names in the top row for
four columns, saved the sheet. I then linked the sheet to Access. With no
data in the spreadsheet, the table shows no data, and there is no new record
row. If I try to append data to Columns A and B using an append query, I
get a "you are using a non-updateable query" or something similar. If I
name a range and link to the named range, with actual data in a few records,
the entire range shows, the data shows in the first few rows, but the whole
thing is non-updateable.
I thought that an Excel spreadsheet was updateable from Access. Am I doing
something wrong or is Excel indeed not updateable from Access?
John W. Colby
www.ColbyConsulting.com
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com