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
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


0