Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsFormsForms ProgrammingQueriesModules / DAO / VBAReports / PrintingMacrosDatabase DesignSecurityConversionImporting / LinkingSQL Server / ADPMultiuser / NetworkingReplicationSetup / ConfigurationDeveloper ToolkitsActiveX ControlsNew UsersGeneral 1General 2
Access DirectoryToolsTutorialsUser Groups
Related Topics
SQL ServerOther DB ProductsMS OfficeMore Topics ...

MS Access Forum / Modules / DAO / VBA / November 2007

Tip: Looking for answers? Try searching our database.

One Access record updated to subsequent Excel row

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Janis - 06 Nov 2007 23:08 GMT
I have one recurring problem with this program.   The user updates an Access
db one record at a time.    I want the records added one at a time to the
Excel sheet.
Right now it does it but it writes over the first record, and always stays
on the first row.  I want it to add the next record in the Else clause to the
subsequent row in the sheet.  I can't see why it doesn't offset the rows by 1
for each update?  

thanking you in advance.

Private Sub Form_AfterUpdate()

Dim fso As Object
Dim appExcel As Excel.Application
Dim wbk As Excel.Workbook
Dim wks As Excel.Worksheet
Dim EndRow As Long
Dim SOrgPath As String
Dim SPath As String

Dim dbs As DAO.Database
Dim rst As DAO.Recordset
'Remember original default path

'Set the new path

'Check if directory exists if not create it
   If Dir("c:\Test", vbDirectory) = "" Then
       MkDir "c:\Test"
       ChDir "c:\Test"
   End If

'Check if Excel object is created if not create it
Set fso = CreateObject("Scripting.FileSystemObject")
   If Not fso.FileExists("c:\Test\Employees.xls") Then
       Set appExcel = New Excel.Application
       appExcel.Application.Visible = True
       appExcel.DisplayAlerts = False
       Set wbk = appExcel.Workbooks.Add
       Set wks = appExcel.Worksheets(1)
       wks.Name = "Emp"
       wks.Activate
       
   
   
       Cells(1, 1).Value = Me.Form.ID
       Cells(1, 2).Value = Me.Form.FirstName
       Cells(1, 3).Value = Me.Form.Salary
       
       wbk.SaveAs ("C:\Test\Employees.xls")
       wbk.Close
       appExcel.Quit
       Set dbs = Nothing
       Set fso = Nothing

   Else

       Set appExcel = Excel.Application
       appExcel.Visible = True
       appExcel.DisplayAlerts = False
   
       Set wbk = appExcel.Workbooks.Open("Employees.xls")
       
       Set wks = appExcel.Worksheets("Emp")
 
       wks.Activate
       
       EndRow = Cells(Rows.Count, 1).End(xlUp)
  Debug.Print EndRow
       Cells(EndRow + 1, 1).Value = Me.Form.ID
       Cells(EndRow + 1, 2).Value = Me.Form.FirstName
       Cells(EndRow + 1, 3).Value = Me.Form.Salary
   Debug.Print EndRow
      wbk.SaveAs ("c:\Test\Employees.xls")
      wbk.Close
      appExcel.Quit
      appExcel.Quit
       
     
   End If

 appExcel.DisplayAlerts = True
End Sub
Paolo - 07 Nov 2007 13:01 GMT
Hiya Janis,
I'm here again
I dunno why the way to find the first empty row doesn't work always so amend
your code in this way:
substitute this line EndRow = Cells(Rows.Count, 1).End(xlUp)
with those

   Cells(Rows.Count, 1).Select
   Selection.End(xlUp).Select
   EndRow = ActiveCell.Row

and remember to specify the full path of the file in this line
Set wbk = appExcel.Workbooks.Open("Employees.xls")
so the line must become
Set wbk = appExcel.Workbooks.Open("c:\test\Employees.xls")
I explained that more verbosely answering your previuos post.

Regards Paolo

> I have one recurring problem with this program.   The user updates an Access
> db one record at a time.    I want the records added one at a time to the
[quoted text clipped - 79 lines]
>   appExcel.DisplayAlerts = True
> End Sub
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.