MartyConnelly
martyconnelly at shaw.ca
Tue Jul 15 00:35:19 CDT 2003
Bob Heygood wrote: >Hey to the group, > >I am working with a new client. they asked me to provide a front end to some >Excel sheets. I told them it should not be too difficult. Of course I asked >them why the whole project could not be moved to Access and was told "the >CFO is very comfortable w/Excel", a common response according to discussions >at our local Access group breakfasts. They did agree that once I completed >the project, they would not change anything in the sheets (oh yeah!). >Well most of it is just a matter of linking to the sheet and treating like a >table. But one of the tasks is to recreate a viewable/printable version of >one of the sheets and not let the user see the calcs behind any of the >cells. > >Now for the question: >Can I get a hold of the calculation/formula behind a given cell in a sheet >thru automation? > >Once that is accomplished, I think I can supply a solution for them. > >TIA, > >Bob Heygood > > Something like this Sub listformula() 'set reference to specific Excel object library as below or use ' Set xlapp = CreateObject("excel.application") 'If Err.Number Then ' MsgBox "Excel not installed or not registered for Automation" ' Exit Sub ' End If ' Excel object Variables Dim xlapp As Excel.Application Dim xlbook As Excel.Workbook Dim xlsheet As Excel.Worksheet Dim Cell As Excel.Range Dim sh As Excel.Worksheet Dim nm As Excel.Name ' DAO Object variables Dim rst As DAO.Recordset Dim db As DAO.Database ' Other variables Dim lngNumRows As Long Dim lngNumCols As Long Dim intI As Integer Set xlapp = New Excel.Application xlapp.Visible = True ' Change to the correct path for your xls file Set xlbook = xlapp.Workbooks.Open("c:\Excel\Loan Calc.xls") ' Change to the correct name of your worksheet Set xlsheet = xlbook.Worksheets("Amortization Table") lngNumRows = xlsheet.UsedRange.Rows.Count Debug.Print lngNumRows lngNumCols = xlsheet.UsedRange.Columns.Count Debug.Print lngNumCols Dim FName As String Dim Fnum As Long FName = "C:\Excel\Export2.txt" Fnum = FreeFile Open FName For Output As Fnum For Each sh In xlbook.Worksheets For Each nm In sh.Names Debug.Print nm.Name & vbTab & nm.RefersTo Next nm For Each Cell In xlsheet.UsedRange.Cells If Cell.HasFormula Then ' Debug.Print Cell.Address & vbTab & Cell.Formula Print #Fnum, Cell.Address & vbTab & Cell.Formula '424 error possible End If Next Cell Next sh Close Fnum ' ' 'xlbook.Save xlbook.Close xlapp.Quit Set xlapp = Nothing Set xlbook = Nothing Set xlsheet = Nothing Set db = Nothing Set rst = Nothing End Sub > >