Visual Basic - insertar formula de excel desde vb

Life is soft - evento anual de software empresarial
 
Vista:

insertar formula de excel desde vb

Publicado por rafa (1 intervención) el 16/06/2005 18:57:49
hola, acudo a la sabiduria popular ante un problema que me va a volver loco y no doy como solucionar...os comento un poco, tengo una base de datos access y estoy modificando con codigo la accion de algunos botones...uno de los cuales lo que quiero que haga es modificar una hoja de calculo, lo hace todo bien, todo funciona escepto lo que os paso a comentar, cuando intento insertar la formula "bdsuma" en una celda que ya la contiene pero la que yo quiero insertar está algo modificada, es decir sustituir una por otra...no hay forma me da errores en tiempo de ejecucion os pongo el codigo de la sub para que ol hagais una idea vale:
Sub OrganizaHoja(cadSQL As String, _
libro As String, _
hoja As String)

Dim appExcel As Object 'Excel.Application
Dim rst As Recordset 'DAO.Recordset
Dim db As Database
Dim fld As Object 'DAO.Field
Dim fila As Integer
Dim columna As Integer
Dim contador As Integer
Dim tamtabla As Integer
Dim dif As Integer

' abrimos excel, lo hacemos invisible y abrimos el libro
' que nos interesa
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = True
appExcel.Workbooks.Open Filename:="C:\Documents and Settings\rafael\Escritorio\mantenimiento\Partes_04.xls"

' abrimos la tabla temporal para poder trabajar en un momento dado con ella

Set db = CurrentDb()
Set rst = db.OpenRecordset("SELECT Count(tabla_mes_elegido_temporal.numero) AS CuentaDenumero FROM tabla_mes_elegido_temporal;")
rst.MoveFirst
tamtabla = rst!CuentaDenumero

'tamtabla = db.OpenRecordset("Select count * from tabla_mes_elegido_temporal")
' MsgBox (tamtabla)

'abrimos la hoja del libro
With appExcel.Sheets("MAYO")

'contamos el numero de filas que tiene la hoja
'fila termina estando situada en la primera vacia
fila = 3
columna = 2
contador = 0
While .Cells(fila, columna) <> ""
fila = fila + 1
contador = contador + 1
Wend
' MsgBox (contador)

'si vamos a meter mas registros de los que habia en la hoja
'copiamos la formula en la columna G (la 6)y metemos la suma en la ultima fila de dicha columna
If contador < tamtabla Then
.Cells(tamtabla + 3, 7) = .Cells(contador + 3, 7) 'metemos la suma de la columna G en su celda
While fila <> tamtabla + 3
.Cells(fila, 7) = .Cells(fila, 6) * 0.1456
fila = fila + 1

Wend
End If

'si vamos a meter menos registros de los que habia en la hoja
'borramos los registros antigüos y subimos la formula de la suma
If contador > tamtabla Then
.Cells(3 + tamtabla, 7) = .Cells(fila, 7) 'metemos la formula de la suma

While fila <> tamtabla + 2 ' borramos las filas desde fila-1 hasta 2
.Cells(fila, 1) = ""
.Cells(fila, 2) = ""
.Cells(fila, 3) = ""
.Cells(fila, 4) = ""
.Cells(fila, 5) = ""
.Cells(fila, 6) = ""
fila = fila - 1
Wend
End If

' calculamos el numero de incidencias registradas este mes segun su campo autonumérico.
.Cells(4, 13) = tamtabla

'Dim num
' Establece una variable para la celda B5 en Sheet1.
'Set num = .Range("L7")

'num.Select
' Inserta una fórmula en la celda B5.
.Range("L7").Clear
.Range("L7").Formula = "=BDSUMA($E$2:$G$" & tamtabla + 3 & ";" & Chr(34) & "MANP" & Chr(34) & ";P7:P8)"


End With

rst.Close

' activar estas dos lineas si se quiere cerrar
' y guardar los cambios automáticamente

'appExcel.ActiveWorkbook.Close True
'appExcel.Quit

Set appExcel = Nothing

End Sub
'*********************************************************

tambien he probado .cells(7,12).formula y nada, tambien probé a hacer un .range().select y luego un activecell.formula o formulaR1C1 y nada...en fin estoy desesperado si alguien me puede orientar de porqué está fallando se lo agradecería, porque no hay forma de insertar esta formula en la dichosa celda.

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:insertar formula de excel desde vb

Publicado por Gabriel (27 intervenciones) el 17/06/2005 21:31:36
¿Mi duda es, Solo en esa celda te da el problema o no puedes escribir en ninguna de las celdas de la hoja?

Exactamente que error de ejecucion o que te dicen los errores.

Ahora por lo que vi tu formula te regresa algo asi:

=BDSUMA($E$2:$G$6;"MANP";P7:P8)
donde el 6 antes del ;"MANP" es tu variable tamtabla no se si Excel lo esta tomando como Numerico en vez de caracter para concatenarlo a la formula.

por que no intenta con
.Range("L7").Formula = "=BDSUMA($E$2:$G$" & TRIM(STR(tamtabla + 3)) & ";" & Chr(34) & "MANP" & Chr(34) & ";P7:P8)"

Suerte, si necesitas mas escribeme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar