Newsgroup: it.comp.lang.visual-basic
Titolo: JET e files XLS

Salve a tutto il NG.
Ho la necessità di accedere a dei dati inseriti da vari utenti su fogli
excel e salvare tali dati sul mio DB access. Per ora riesco ad aprire il
foglio XLS come se fosse un DB Access ed accedere ai dati dei fogli visti
come tabelle tramite "select * from Foglio1$". Il rs però contiene i dati
sottoforma di "valore" mentre io ho bisogno della formula che sta in una
determinata casella. C'e' la possibilità di accedere alla formula piuttosto
che al risultato della formula stessa??
Grazie.

> Max:

Potresti sperimentare il seguente esempio.
In "Foglio1" di "Cartel1.xls":
  A   B   C   D
1 aaa 123 321 =SOMMA(B1:C1)
2 bbb 456 654 =SOMMA(B2:C2)
3 ccc 789 987 =SOMMA(B3:C2)
In "Tabella1" di "db1.mdb":
Campo1
Campo2
Campo3
Campo4
Option Explicit
Private Sub Prova( _
)
' Ref.: Microsoft Excel 8.0 Object Library
Dim xlApp   As Excel.Application
Dim xlWbk   As Excel.Workbook
Dim xlWsh   As Excel.Worksheet
Dim xlRng   As Excel.Range
Dim lngRow  As Long
Dim dbs     As DAO.Database
Dim rst     As DAO.Recordset
  Set xlApp = New Excel.Application
  With xlApp
    Set xlWbk _
      = .Workbooks.Open( _
          FileName:="C:\WINDOWS\DESKTOP\CARTEL1.XLS" _
        , ReadOnly:=True)
    With xlWbk
      Set xlWsh = .Worksheets.Item(Index:="Foglio1")
      Set dbs _
        = DAO.DBEngine.OpenDatabase( _
            Name:="C:\WINDOWS\DESKTOP\DB1.MDB")
      Set rst _
        = dbs.OpenRecordset( _
            Name:="Tabella1" _
          , Type:=DAO.dbOpenTable)
      With xlWsh.UsedRange
        For lngRow = 1 To .Rows.Count
          With .Cells
            Debug.Print "Record #"; lngRow
            Debug.Print "  Valori:"
            Debug.Print .Item( _
                RowIndex:=lngRow _
              , ColumnIndex:=1).Value; "; ";
            Debug.Print .Item(lngRow, 2).Value; "; ";
            Debug.Print .Item(lngRow, 3).Value; "; ";
            Debug.Print .Item(lngRow, 4).Value
            Debug.Print "  Formule:"
            Debug.Print .Item(lngRow, 1).Formula; "; ";
            Debug.Print .Item(lngRow, 2).Formula; "; ";
            Debug.Print .Item(lngRow, 3).Formula; "; ";
            Debug.Print .Item(lngRow, 4).Formula
            Debug.Print "  Formule localizzate:"
            Debug.Print .Item(lngRow, 1).FormulaLocal; "; ";
            Debug.Print .Item(lngRow, 2).FormulaLocal; "; ";
            Debug.Print .Item(lngRow, 3).FormulaLocal; "; ";
            Debug.Print .Item(lngRow, 4).FormulaLocal
            Debug.Print
            Call rst.AddNew
            Let rst.Fields _
              .Item(Index:="Campo1").Value _
              = .Item(lngRow, 1).Value
            Let rst("Campo2").Value _
              = .Item(lngRow, 2).Value
            Let rst("Campo3").Value _
              = .Item(lngRow, 3).Value
            Let rst("Campo4").Value _
              = .Item(lngRow, 4).FormulaLocal
            Call rst.Update
          End With
        Next
      End With: Set xlWsh = Nothing
      Call rst.Close: Set rst = Nothing
      Call dbs.Close: Set dbs = Nothing
      Call .Close
    End With: Set xlWbk = Nothing
    Call .Quit
  End With: Set xlApp = Nothing
End Sub
--
Ciao.
Maurizio