Bueno señores espero poder contar con su valioso aporte en esta pequeña aplicacion que estoy desarrollando. Hasta los momentos me trabaja bien pero quise asignar unar funcion de imprimir un Datagrid, me sale el error antes mencionado. He tratado de buscar la solucion a mi problema pero no lo encuentro vi las variables que declare y el nombre de los objetos pero no veo nada anormal. El codigo de la aplicacion es este:
Funcion de Conexion para leer el TxT
Código:
Private Function fichero_txt() As ADODB.Recordset
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
'Cadena de conexión
conn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};" & _
"DBQ=" & App.Path & ";", "", ""
'Ejecutamos el recordset pasandole el archivo de texto en la cláusula From
rs.Open "select * from [prueba#txt]", conn, adOpenStatic, _
adLockReadOnly, adCmdText
'eliminamos las variables
Set fichero_txt = rs
Set rs = Nothing
Set conn = Nothing
End Function
Funcion que use para imprimir
Código:
Public Function imprimir(ByVal DataGrid As DataGrid, _
ByVal fichero_txt As ADODB.Recordset, _
ByVal Titulo As String) As Boolean
Dim c As Integer
Dim dato As String
Dim Titles As String
Dim Header As String
Dim l As Integer 'number of lines For portrait
Dim LLCount As Integer 'temporary line counter
Dim Rowado As Integer
Dim Rowdatag As Integer
Dim registro As String * MAX_CARACTERES
Dim t As String * MAX_CARACTERES
Screen.MousePointer = vbHourglass
DataGrid1.Row = 0
Header = " - Página n°: "
For c = 1 To DataGrid.Columns.Count
t = DataGrid.Columns(c - 1).Caption
Titles = " " & LTrim(Titles & t) & " "
Next
' Configura la fuente de la impresión para el encabezado
Printer.Font.Size = 8
Printer.Font.Bold = True
Printer.Font.Name = "Courier New"
l = 82
' imprime el titulo , el encabezado y el número de página
Printer.Print Space(40) & Titulo
Printer.Print Header; Printer.Page
Printer.Print Titles
Printer.Font.Bold = False
DataGrid.Refresh
' recorre los datos del datagrid
For Rowado = 1 To Int((rs.RecordCount - 1) / 13) + 1
For Rowdatag = 0 To DataGrid.VisibleRows - 1
DataGrid.RowBookmark (Rowdatag)
dato = Space(MAX_CARACTERES)
Dim s As Variant
For c = 1 To DataGrid.Columns.Count
registro = DataGrid.Columns(c - 1).CellText(DataGrid.Bookmark)
dato = " " & LTrim(dato & registro) & " "
Next
LLCount = LLCount + 1
If LLCount <= l Then
Printer.Print dato
Else
' Agrega una nueva hoja
Printer.NewPage
Printer.Print Space(40) & Titulo
Printer.Print Header; Printer.Page
Printer.Print Titles
Printer.Print dato
LLCount = 0
End If
rs.MoveNext
Next Rowdatag
DataGrid.Scroll 0, DataGrid.VisibleRows
Next Rowado
Printer.Print " "
Printer.EndDoc
Screen.MousePointer = vbNormal
imprimir = True
Exit Function
' error
Error_Function:
MsgBox Err.Description, vbCritical
End Function
En el Evento Click del Command es donde me genera el Error
Código:
Private Sub Command1_Click()
Call imprimir(DataGrid, rs, "Formato de Impresión") ==== Aqui es el error
End Sub
Bueno muchachos espero contar con su colaboracion y atento a sus respuestas, de antemano les doy las gracias.