saludos, acabo de llegar. a ver si vosotros dais con los problemas que tengo.
el proyecto en que me he embarcado:
tengo 5 forms de los que parto para hacer distintas cosas. Objetivo proyecto :
1.-localizar un texto dentro de un determinado libro y determinada hoja.
2.- poder añadir nuevo texto a las hojas , localizar distintos datos para cambiarlos.
llevo bastante tiempo trabajando con ello. pero al final me daba el error 1004 un monton de veces, y ahora que intento cambiar partes del programa me dan otros. :smt005 . ya no se que hacer.
mi idea era cada vez que necesite hacer un busqueda abrir el libro de excel con su hoja correspondiente( 2 programas distintos) luego según vaya necesitando programillas que me hagan el resto de las cosas,(buscar texto, cambiar texto, añadir texto...)
intente hacerlo con "agregar procedimiento" desde un módulo y luego llamarlo desde el form que me interese.
al final desistí. me daba errores y mas errores.
he leido vuestro sistema de apertura de excel y lo he intentado pero tambien me da error. yo tenia el programa de busqueda así:
Código:
Public Sub LOCALIZARLIBROHOJA()
Dim tema As String
Dim HOJAEXCEL As String
Dim objexcel As Object
Dim objlibro As Object
tema = UCase(frm3busqueda.txt1.Text)[toma el nombre del libro de un text de un form desde visual]
HOJAEXCEL = UCase(frm3busqueda.txt2.Text)[toma el nombre de la hoja de un text de un form en visual]
Set objexcel = GetObject(, "excel.application")[abro excel. el primer dia no me dio problemas, también lo intente con createobject, pero me da también errores]
objexcel.Visible = False
Set objlibro = objexcel.Workbooks.Open("c:\documents and settings\uservpn\escritorio\m\proye\buscar\" & tema & ".xls")[abro libro que me interesa]
objlibro.Worksheets(HOJAEXCEL).Select[abro hoja que me interesa]
[variables para hacer busquedas]
Dim r1 As Range
Dim i As Integer
Dim vale As Boolean
frm3busqueda.lstencontrado.Clear
frm3busqueda.Label4.Caption = ""
vale = False
objlibro.ActiveSheet.Range("a1").Activate [color=red][en el primer programa que hice ponia solo el range("a1").activate, pero me daba el error 1004)[/color]
[empieza la búsqueda]
Do While Not IsEmpty(ActiveCell)
If ActiveCell.Value = UCase(frm3busqueda.txttermino.Text) Then[ primer error,nº 93 me pone que no es variable] [he intentado poner delante objlibro y activesheet pero tambien me da errores tipo 1004 o similares]vale = True
Set r1 = objlibro.ActiveSheet.ActiveCell [color=red](este en el 1º programa que hice solo ponia activecell, pero me vuelve a dar errores[/color])
For i = 0 To 254
x = r1.Offset(0, i + 1).Value
If x <> "" Then
[los resultados de la busqueda me los pone en un list]frm3busqueda.lstencontrado.AddItem x
End If
Next i
End If
ActiveCell.Offset(1, 0).Activate
Loop
If vale Then
frm3busqueda.Label4.Caption = "Nº de libros encontrados : " & frm3busqueda.lstencontrado.ListCount
Else
frm3busqueda.Label4.Caption = "lo sentimo , no hay coincidencia"
End If
End Sub ahora he intentado añadir a esto lo que vosotros proponeis :
Código:
[color=red]con este localizo el libro y la hoja que me interesa[/color]
Public Sub LOCALIZARLIBROHOJA()
Dim tema As String
Dim HOJAEXCEL As String
Dim objexcel As Excel.Application
Dim objlibro As Excel.Workbook
Dim objhoja As New Excel.Worksheet
Dim r1 As Range
Dim i As Integer
Dim vale As Boolean
tema = UCase(frm3busqueda.txt1.Text)
HOJAEXCEL = UCase(frm3busqueda.txt2.Text)
On Error Resume Next
Set objexcel = GetObject(, "excel.application")
objexcel.Visible = False
If Err.Number <> 0 Then
Set objexcel = CreateObject("excel.application")
Else
objexcel.Quit
Set objexcel = Nothing
Set objexcel = CreateObject("excel.application")
End If
Err.Clear
On Error GoTo 0
Set objlibro = objexcel.Workbooks.Open("c:\documents and settings\uservpn\escritorio\m\proye\buscar\" & tema & ".xls")
objlibro.Sheets(HOJAEXCEL).Select
frm3busqueda.lstencontrado.Clear
frm3busqueda.Label4.Caption = ""
vale = False
Range("a1").Activate
Do While Not IsEmpty(ActiveCell)
If ActiveCell.Value = UCase(frm3busqueda.txttermino.Text) Then
vale = True
Set r1 = ActiveSheet.ActiveCell
For i = 0 To 254
x = r1.Offset(0, i + 1).Value
If x <> "" Then
frm3busqueda.lstencontrado.AddItem x
End If
Next i
End If
ActiveCell.Offset(1, 0).Activate
Loop
If vale Then
frm3busqueda.Label4.Caption = "Nº de libros encontrados : " & frm3busqueda.lstencontrado.ListCount
Else
frm3busqueda.Label4.Caption = "lo sentimo , no hay coincidencia"
End If
End Sub
[color=red]con este programa cierro para que quede todo cerrado y vacias las variables[/color]
Public Sub CERRARLIBRO()
'CIERRO EXCEL Y VACIO VARIABLES
Dim objexcel As Object
Set objexcel = CreateObject("excel.application")
On Error Resume Next
objexcel.ActiveWorkbook.Save
Application.Quit
ActiveWorkbook.Close
objexcel.Visible = True
Set objexcel = Nothing
Set objlibro = Nothing
Set ActiveSheet = Nothing
HOJAEXCEL = ""
tema = ""
End Sub pero no hay manera de que me funcione, ni de una forma ni de otra.si pudierais ver el programa os lo agradeceria, la otra forma seria mandaros la carpeta donde tengo todos los programas y los libros.
un saludo
y gracias de antemano.
merops