Formula desde Acces

04/02/2010 - 17:26 por Javier | Informe spam
Hola, tengo una tabla acces que quiero migrar a Excel, pero necesito que en
algunos campos me totalice, he intentado hacelo grabando la formula en el
campo correspondiente de forma que queda de asi, Campo 1: 25 Campo 2: 25
Campo3: ¡+B1 (Para que al pasar a excel me lo intreprete como formula) el
problema es que cuando lo exporto me lo interpreta como texto. No puedo
hacerlo directamente en Excel por que la tabla la genero mediante codigo y
segun unas condiciones suma unos valores u otros)
¿Hay alguna manera de que estos campos me los interprete como formulas?

Un saludo
Javier

Preguntas similare

Leer las respuestas

#1 Abraham
04/02/2010 - 21:58 | Informe spam
Y no es mas facil llevar los datos de tu campo1 y campo2 al Excel y
despues, ahi mismo colocar las formulas??? O la pregunta solo para
saber si se puede directamente enviarlo del campo3 y que Excel lo
inlcuya como formula? Esto ultimo es complicarse, yo lo haria con ADO,
pero repito, es complicarse:

Sub xxx()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim x As Long, y As Long
Set cnn = New ADODB.Connection

cnn.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=D:\Base de datos1.accdb" & ";" & _
"Jet OLEDB:Database Password=xxx"
cnn.Open

Set rst = New ADODB.Recordset


Sql$ = "select * from tabla2"

With rst
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open Sql$, cnn, , , adCmdText
End With

rst.MoveFirst
y = 1

For x = 1 To rst.RecordCount
Cells(y, 1) = rst.Fields!campo1
Cells(y, 2) = rst.Fields!campo2
Cells(y, 3) = rst.Fields!campo3
Range("C65536").End(xlUp).Formula = Range("C65536").End(xlUp).Formula
rst.MoveNext
y = y + 1
Next x

Set cnn = Nothing
Set rst = Nothing

End Sub


Abraham
Respuesta Responder a este mensaje
#2 Javier
05/02/2010 - 12:03 | Informe spam
Hola Abraham, muchas gracias por tu respuesta, el tema de pasar directamente
el formato de las formulas desde access es por que son muchas y tendria que
generarlas una a una cada vez que saco el informe y no es un informe estatico
si no que cada mes tiene mas o menos lineas, y hacer las formulas ha mano es
un mucho trabajo ya que es bastante grande, esto lo sacaba en un listado
access, pero ahora me lo piden igual pero en formato excel.

Por otro lado solo comentarte que investigando he encontrado una solución,
un poco rudimentaria, pero funciona, lo dejo aqui por si a alguien le viene
bien.
Simplemente hago una busqueda del valor "=" que es como comienzan todas las
formulas que le paso al informe, y lo sustituyo por ese mismo valor "=" y
automaticamente cambia los literales a formulas en todos los campos.

Un saludo
Javier

"Abraham" wrote:

Y no es mas facil llevar los datos de tu campo1 y campo2 al Excel y
despues, ahi mismo colocar las formulas??? O la pregunta solo para
saber si se puede directamente enviarlo del campo3 y que Excel lo
inlcuya como formula? Esto ultimo es complicarse, yo lo haria con ADO,
pero repito, es complicarse:

Sub xxx()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim x As Long, y As Long
Set cnn = New ADODB.Connection

cnn.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=D:\Base de datos1.accdb" & ";" & _
"Jet OLEDB:Database Password=xxx"
cnn.Open

Set rst = New ADODB.Recordset


Sql$ = "select * from tabla2"

With rst
..CursorLocation = adUseClient
..CursorType = adOpenKeyset
..LockType = adLockOptimistic
..Open Sql$, cnn, , , adCmdText
End With

rst.MoveFirst
y = 1

For x = 1 To rst.RecordCount
Cells(y, 1) = rst.Fields!campo1
Cells(y, 2) = rst.Fields!campo2
Cells(y, 3) = rst.Fields!campo3
Range("C65536").End(xlUp).Formula = Range("C65536").End(xlUp).Formula
rst.MoveNext
y = y + 1
Next x

Set cnn = Nothing
Set rst = Nothing

End Sub


Abraham

.

Respuesta Responder a este mensaje
#3 Abraham
05/02/2010 - 23:15 | Informe spam
Hola JAvier. Para nada rudimentario tu metodo, justo por eso te hacia
las preguntas si era tan necesario hacerlo al llevar los datos, ya que
en lugar de complicarte como dije usando codigo, pues tu optaste por
la salida mas simple he igual de efectiva, y lo mejor, desde el mismo
Excel

saludos

Abraham
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida