Visual Basic para Aplicaciones - VBA consulta visual-excel

Life is soft - evento anual de software empresarial
 
Vista:

VBA consulta visual-excel

Publicado por oscar (2 intervenciones) el 25/08/2006 11:08:00
He creado una bbdd con acces y una pequeña aplicación que la gestiona a partir de código en visual basic. A la hora de imprimir tenía muchos problemas para generar un informe, opté por utilizar excel, hice un script que me genera un documento de excel que guarda en un directorio y a posteriori lo imprime. Hasta aquí todo ok, pero el problema esta cuando quiero imprimir mas de una vez...

Yo imprimo un albarán, por ejemplo 32.000, cuando acaba de imprimir hago una nueva búsqueda del 33000 por ejemplo, vuelvo a clicar en imprimir y es cuando me sale este mensaje de error:
Error en el método
'Sheets' del objeto '_Global'

Yo creo que lo que pasa es que utilizo una plantilla de excel que al llamarla por segunda vez parece ser que está abierta o que se queda en memoria la otra ruta antigua al hacer un save as....

Código:

Private Sub btnPrint_Click()

Dim objExcelapp As Excel.Application
Dim objexcelworkbook As Excel.Workbook

Dim lin As Integer
Dim col As Integer
Dim fecha As String
Dim ruta As String

ruta = txtRuta.Text

Set objExcelapp = New Excel.Application 'Creo la instancia de Excel
Set objexcelworkbook = objExcelapp.Workbooks.Add("C:\Archivos de programa\Base de Dades CIP\plantilla.xls") 'Puedo añadir una plantilla para que genere el nuevo libro.

fecha = Format(Now, "dd/mm/yy")

If Option1(0).Value = True Or Option1(1).Value = True Then

Sheets("plantilla").Range("titulo").Value = txtTitulo.Text
Sheets("plantilla").Range("num_pedido").Value = txtNumPedido.Text
Sheets("plantilla").Range("ruta").Value = txtRuta.Text
Sheets("plantilla").Range("fecha").Value = fecha

If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveFirst
'VBA, programar excel - visual basic for applications
lin = 12
Do While Not Adodc1.Recordset.EOF
For col = 1 To 7
Sheets("plantilla").Cells(lin, col).Value = Adodc1.Recordset.Fields(col - 1) 'Lo añade todo bucle ok!
Next col
Adodc1.Recordset.MoveNext
lin = lin + 1
Loop
End If

'Grabo
ActiveWorkbook.SaveAs FileName:="C:\rutasfacturadas\" & ruta & ".xls"
Sheets("plantilla").Name = ruta
ActiveWorkbook.Close True

Set objexcelworkbook = Nothing
Set objExcelapp = Nothing

End Sub
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:VBA consulta visual-excel

Publicado por JuanC (243 intervenciones) el 25/08/2006 14:03:01
Mirá, es difícil sacarlo sin depurarlo...
te recomiendo que pongas un punto de interrupción
dentro de la rutina y lo depures.

También te convendría cerrar la instancia de Excel
objExcelapp.Application.Quit

Saludos desde Baires, JuanC
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

RE:VBA consulta visual-excel

Publicado por oscar (2 intervenciones) el 25/08/2006 14:18:22
Ok se me había olvidado cerrar la instancia... gracias.

Con lo que respecta a la depuración ya lo he hecho y la linea que da error es la siguiente:

Sheets("plantilla").Range("titulo").Value = txtTitulo.Text

El error está centralizado en la hoja plantilla. En la aplicación cierro un libro pero quizá el primero "plantilla.xls" queda abierto y por eso me da el error o por el contrario el segundo que guardo como "32000.xls" queda abierto como plantilla y claro la hoja no se llama plantilla si no 32000....

No se si me explico con claridad, jeje, es un poco denso...
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