Foros del Web » Soporte técnico » Ofimática »

Error 1004, error definido por la aplicacion o el objeto

Estas en el tema de Error 1004, error definido por la aplicacion o el objeto en el foro de Ofimática en Foros del Web. Hola amigos, estoy tratando de implementar este codigo pero en este ciclo, especificamente en la iteracion 26 me da un error Error 1004, error definido ...
  #1 (permalink)  
Antiguo 09/02/2011, 09:52
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Error 1004, error definido por la aplicacion o el objeto

Hola amigos, estoy tratando de implementar este codigo pero en este ciclo, especificamente en la iteracion 26 me da un error

Error 1004, error definido por la aplicación o el objeto

El texto que se pasa cuando da el errro es "Lugar Examen Médico"

y el codigo del ciclo es :

Código:
For i = 0 To rst.Fields.Count - 1
                Sheets(Hoja).Range(Chr(i + 65) & f + 1).Value = rst.Fields(i).Name
 Next
Agradecere su respuesta o algun comentario...
__________________
Nuevamente a las pistas ...
  #2 (permalink)  
Antiguo 09/02/2011, 12:50
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Error 1004, error definido por la aplicacion o el objeto

En la iteración 25 tendrás:
Chr(i + 65) = Chr(25 + 65) = Chr(90) = "Z"

¿Estás de acuerdo?

Pero en la iteración 26 tendrás:
Chr(i + 65) = Chr(26 + 65) = Chr(91) = "["

Como advertirás: ¡ni modo que ese código te funcionara alguna vez!...

La opción es modifcar las cosas así:
Sheets(Hoja).Cells(f + 1, i + 1).Value = rst.Fields(i).Name

Saludos, Cacho.
  #3 (permalink)  
Antiguo 09/02/2011, 12:57
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Respuesta: Error 1004, error definido por la aplicacion o el objeto

Grande Cacho,

funciona, pero no se porque si me explicaras el codigo porfavor, me ayudaria con la otra instruccion que me da error ...
Código vb:
Ver original
  1. Sheets(Hoja).Range(Chr(c + 65) & f + 1).Value = rst.Fields(c)
__________________
Nuevamente a las pistas ...
  #4 (permalink)  
Antiguo 09/02/2011, 13:07
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Respuesta: Error 1004, error definido por la aplicacion o el objeto

Bueno Cacho, estaba cantado lo que habia que hacer
Código vb:
Ver original
  1. Sheets(Hoja).Cells(f + 1, c + 1).Value = rst.Fields(c)

Ahora el codigo para hacer consultas a una bd access desde excel
Código vb:
Ver original
  1. Sub consultar_AlHacerClic()
  2.    Call Ejecutar("Select * From Maestro", "Hoja2")
  3.    'Call Ejecutar("Select * From Maestro", "Hoja2")
  4. End Sub
  5.  
  6.  
  7. Sub Ejecutar(Sql As String, Hoja As String)
  8.  
  9. Dim cn As Object
  10.  
  11. ' crea un objeto Connection
  12. Set cn = CreateObject("ADODB.Connection")
  13.  
  14. ' IMPORTANTE: Indicar la cadena de conexión a usar
  15. cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data " & _
  16.                             "Source=D:\Documents & Settings\wasmadr\" & _
  17.                             "Escritorio\practica 2011\bd1.mdb;Persist Security Info=False"
  18.        
  19.     ' verifica que los parámetros no estén vacios
  20.    If Sql <> vbNullString And Hoja <> vbNullString Then
  21.                        
  22.         ' variable para al rec de ado
  23.        Dim rst As Object
  24.                
  25.         ' abre la conexión a la base de datos
  26.        cn.Open
  27.            
  28.             ' crea un nuevo objeto recordset
  29.            Set rst = CreateObject("ADODB.Recordset")
  30.            
  31.             ' Ejecuta el sql para llenar el recordset
  32.            rst.Open Sql, cn, 1, 3
  33.             ' variables para los indices de las filas y columnas
  34.            c = 0
  35.             f = 0
  36.                
  37.             ' recorre las columnas, añade el nombre del campo al encabezado
  38.            For i = 0 To rst.Fields.Count - 1
  39.                
  40.                 'Sheets(Hoja).Range(Chr(i + 65) & f + 1).Value = rst.Fields(i).Name
  41.                 Sheets(Hoja).Range(Chr(c + 65) & f + 1).Value = rst.Fields(c)
  42.                  
  43.                  Sheets(Hoja).Cells(f + 1, i + 1).Value = rst.Fields(i).Name
  44.            
  45.            Next
  46.  
  47.             f = f + 1
  48.                              
  49.             ' recorre todo el recordset hasta el final
  50.            Do While Not rst.EOF
  51.                
  52.                 ' recorre los campos en el registro actual del recordset para recuperar el dato
  53.                For i = 0 To rst.Fields.Count - 1
  54.                     ' añade el valor a la celda
  55.                    'Sheets(Hoja).Range(Chr(c + 65) & f + 1).Value = rst.Fields(c)
  56.                    Sheets(Hoja).Cells(f + 1, c + 1).Value = rst.Fields(c)
  57.                     c = c + 1
  58.                 Next
  59.                
  60.                 ' resetea el indice de las columnas
  61.                c = 0
  62.                 ' Referencia al registro actual (incrementa )
  63.                f = f + 1
  64.                 ' Siguiente registro
  65.                rst.MoveNext
  66.           Loop
  67.             ' cierra y descarga las referencias
  68.            On Error Resume Next
  69.             rst.Close
  70.             cn.Close
  71.             Set cn = Nothing
  72.             Set rst = Nothing
  73.         End If
  74. End Sub
__________________
Nuevamente a las pistas ...
  #5 (permalink)  
Antiguo 09/02/2011, 13:24
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Error 1004, error definido por la aplicacion o el objeto

Tienes diversas formas de referenciar la celda "D1". Algunas de ellas:

Range("D1")

Range("D" & "1")

Range(Chr(68) & "1")
En ASCii el caracter 68 es, precisamente, la letra D. Así como la "Z" es el caracter 90.

Cells(1, "D")
Fila 1, Columna D

Cells(1, 4)
Fila 1, Columna 4

i = 1 : Cells(i, "D")

i = 4 : Cells(1, i)

Como te lo mencioné en mi entrada anterior, el caracter 91 no es "AA" (como hubieses deseado), sino el caracter "[" (corchete de apertura).

Lógicamente, la celda "[1" no existe y por ello te indicó el error.

Saludos, Cacho.
  #6 (permalink)  
Antiguo 09/02/2011, 13:41
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Respuesta: Error 1004, error definido por la aplicacion o el objeto

Gracias Cacho, tema solucionado :D
__________________
Nuevamente a las pistas ...
  #7 (permalink)  
Antiguo 31/05/2012, 16:43
 
Fecha de Ingreso: mayo-2012
Ubicación: Bogota
Mensajes: 2
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Error 1004, error definido por la aplicacion o el objeto

Hola, me sorprende como resolviste el problema que te plantearon
Quisiera preguntarte acerca del mismo error
la verdad le he dado todas las vuelats posibles y no entiendo. Estoy tan confundido que aunque tuviera la respuesta en la nariz no la hallaría.
Setrata de esto, tengo dos combobox uno dependiente del otro (municipio depende de departamento), el error me aparece cuando ejecuto el boton agregar y el depurador me señala en amarillo en la siguiente linea
Cells(1, columna).Select



Private Sub cmbdepartamentoe_Change()
Application.ScreenUpdating = False


'Llenamos el combobox cmbmunicipioe al recibir el foco,
'pero antes lo limpiamos
cmbmunicipioe.Clear
'seleccionamos la hoja5
Hoja6.Select
'miramos lo que hay seleccionado en el combobox1
'Listindex + 1 nos devuelve la columna del departamento
'porque el listindex empieza siempre por cero
columna = cmbdepartamentoe.ListIndex + 1
'seleccionamos la celda que proceda,
'a partir de la segunda fila
Cells(1, columna).Select
'vamos a llenar dinámicamente el combobox
'dependiendo del país elegido
Do While Not IsEmpty(ActiveCell)
'Añadimos los nombres de las hojas al combobox
cmbmunicipioe.AddItem ActiveCell
'bajamos una fila
ActiveCell.Offset(1, 0).Select
Loop

End Sub

Lo curioso es que en el mismo formulario tengo otros combobox similares y no me ponen problema, si me ayudas te estaré muy agradecido, un saludo especial desde Colombia.
  #8 (permalink)  
Antiguo 31/05/2012, 16:48
 
Fecha de Ingreso: mayo-2012
Ubicación: Bogota
Mensajes: 2
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Error 1004, error definido por la aplicacion o el objeto

Hola, me sorprende como resolviste el problema que te plantearon
Quisiera preguntarte acerca del mismo error
la verdad le he dado todas las vuelats posibles y no entiendo. Estoy tan confundido que aunque tuviera la respuesta en la nariz no la hallaría.
Setrata de esto, tengo dos combobox uno dependiente del otro (municipio depende de departamento), el error me aparece cuando ejecuto el boton agregar y el depurador me señala en amarillo en la siguiente linea
Cells(1, columna).Select



Private Sub cmbdepartamentoe_Change()
Application.ScreenUpdating = False


'Llenamos el combobox cmbmunicipioe al recibir el foco,
'pero antes lo limpiamos
cmbmunicipioe.Clear
'seleccionamos la hoja5
Hoja6.Select
'miramos lo que hay seleccionado en el combobox1
'Listindex + 1 nos devuelve la columna del departamento
'porque el listindex empieza siempre por cero
columna = cmbdepartamentoe.ListIndex + 1
'seleccionamos la celda que proceda,
'a partir de la segunda fila
Cells(1, columna).Select
'vamos a llenar dinámicamente el combobox
'dependiendo del país elegido
Do While Not IsEmpty(ActiveCell)
'Añadimos los nombres de las hojas al combobox
cmbmunicipioe.AddItem ActiveCell
'bajamos una fila
ActiveCell.Offset(1, 0).Select
Loop

End Sub

Lo curioso es que en el mismo formulario tengo otros combobox similares y no me ponen problema, si me ayudas te estaré muy agradecido, un saludo especial desde Colombia.

Etiquetas: objeto, aplicaciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:38.