Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Find en excel con vb

Estas en el tema de Find en excel con vb en el foro de Visual Basic clásico en Foros del Web. Que concha, pero primero que todo Buenas Tardes. Deseo realizar una consulta en excel con FIND, cuando el dato existe funciona perfectamente, cuando el dato ...
  #1 (permalink)  
Antiguo 06/09/2008, 12:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
Find en excel con vb

Que concha, pero primero que todo Buenas Tardes.
Deseo realizar una consulta en excel con FIND, cuando el dato existe funciona perfectamente, cuando el dato no existe sale el mensaje "Variable de tipo Object o la variable de bloque With no está establecida" err 91.
La definicion de variables y rutina es la suguiente, tomada de aca mismo:
Option Explicit
Global AppXls As Object
Global ret As Boolean
Public Sub Reemplazar(PathXls As String, _
Hoja As String, _
TextoFind As String, _
Optional Match_Case As Boolean)



On Error GoTo Error_Sub
' verifica si existe el path del archivo xls
If Len(Dir(PathXls)) = 0 Then
MsgBox "No se ha encontrado la ruta el Libro", vbCritical
Exit Sub
End If

If Hoja = vbNullString Or _
TextoFind = vbNullString Then
MsgBox "No se indicaron algunos parámetros", vbCritical
Exit Sub
End If

Rem Me.MousePointer = vbHourglass

' Nuevo objeto de Excel Application
Set AppXls = CreateObject("Excel.Application")

' abre el libro
AppXls.Workbooks.Open PathXls

' opcional ( excel no visible )
AppXls.Visible = False

' Ejecuta el método Replace, indicando el Sheet, y las _
opciones de búsqueda y reemplazo
ret = AppXls.ActiveWorkbook.Sheets(Hoja).Application.Cel ls.Find(What:=TextoFind, _
LookAt:=1, _
SearchOrder:=1, _
MatchCase:=Match_Case)
MsgBox "NO"
AppXls.ActiveWorkbook.Save

' cierra y elimina la referencia de Excel
AppXls.Quit
Set AppXls = Nothing

Rem Me.MousePointer = 0
MsgBox "Listo", vbInformation


Exit Sub

' rutina de error
Error_Sub:
MsgBox Err.Description
On Error Resume Next
AppXls.Quit
Set AppXls = Nothing
Rem Me.MousePointer = 0
End Sub
Private Sub Form_Load()
Command1.Caption = "Reemplazar todo"
Me.Caption = "Buscar y reemplzar en Excel"
Text1.Text = "d:\libro25.xls"
Text2 = "Hoja1"
Text3.Text = "texto a buscar"
Text4.Text = "Texto a reemplzar"
End Sub
  #2 (permalink)  
Antiguo 06/09/2008, 15:32
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Find en excel con vb

En vez de definir ret como Boolean, defínelo como Object y usa así:
Código PHP:
Set ret AppXls.ActiveWorkbook.Sheets(Hoja).Application.Cells.Find(What:=TextoFind_
          LookAt
:=1_
          SearchOrder
:=1_
          MatchCase
:=Match_Case
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 08/09/2008, 18:44
 
Fecha de Ingreso: septiembre-2008
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Find en excel con vb

Cita:
Iniciado por David el Grande Ver Mensaje
En vez de definir ret como Boolean, defínelo como Object y usa así:
Código PHP:
Set ret AppXls.ActiveWorkbook.Sheets(Hoja).Application.Cells.Find(What:=TextoFind_
          LookAt
:=1_
          SearchOrder
:=1_
          MatchCase
:=Match_Case

Gracias David, la defini como object, el problema es al validar cuando existe que realice algo como copiar el registro a un archivo, cuando no existe, que lea el proximo registro.
Persiste esta pequeña falla, pero tu consejo me sirvio, solamente que cuando no existe y roduce error, continuo el programa con Resumen Next.
  #4 (permalink)  
Antiguo 09/09/2008, 06:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Find en excel con vb

En realidad al definir como Object no debería producir error, y para saber si no existe ninguna coincidencia solo compara que ret no sea Nothing. Por ejemplo:
Código:
If Not ret Is Nothing Then
   'Existen coincidencias
Else
   'No existen coincidencias
End If
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 02:41.