Macro Buscar y Reemplazar

14/03/2007 - 19:25 por Oszkar M^ | Informe spam
Buenas tardes colegas del foro.

Mi inquietud es la siguiente: He utilizado la grabadora de macros para
establecer el código de una macro que me permita buscar un error en toda la
hoja de excel y lo reemplace por la información que yo quiera. El código
generado por la grabadora de excel es el siguiente:


Sub Macro5()
'
' Macro5 Macro
' Macro grabada el 14/03/2007 por MP
'

'
Cells.Select
Selection.Replace What:="#¡REF!", Replacement:="Cuenta", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub



El problema es que el código no funciona. Se supone que debería buscar el
error "#¡REF!" en TODA la hoja y hacer un reemplazo de todos los que
encuentre; sin embargo, no funciona, es decir, no busca y no reemplaza.

Posteriormente puse nuevamente a grabar otra macro, pero esta vez para una
región de la hoja mucho mas pequeña (el anterior abarcaba toda la hoja) y
esta vez si que funciona, y es muy raro, por que comparo los códigos
generados y son iguales.


Alguien me puede decir que es lo que funciona mal o cómo lo puedo corregir?


Saludos,

Oszkar M^
Sevilla - España

Preguntas similare

Leer las respuestas

#1 Orfao
15/03/2007 - 05:20 | Informe spam
ve en tu post anterior...
Me alimento del conocimiento de todos


"Oszkar M^" wrote:

Buenas tardes colegas del foro.

Mi inquietud es la siguiente: He utilizado la grabadora de macros para
establecer el código de una macro que me permita buscar un error en toda la
hoja de excel y lo reemplace por la información que yo quiera. El código
generado por la grabadora de excel es el siguiente:


Sub Macro5()
'
' Macro5 Macro
' Macro grabada el 14/03/2007 por MP
'

'
Cells.Select
Selection.Replace What:="#¡REF!", Replacement:="Cuenta", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub



El problema es que el código no funciona. Se supone que debería buscar el
error "#¡REF!" en TODA la hoja y hacer un reemplazo de todos los que
encuentre; sin embargo, no funciona, es decir, no busca y no reemplaza.

Posteriormente puse nuevamente a grabar otra macro, pero esta vez para una
región de la hoja mucho mas pequeña (el anterior abarcaba toda la hoja) y
esta vez si que funciona, y es muy raro, por que comparo los códigos
generados y son iguales.


Alguien me puede decir que es lo que funciona mal o cómo lo puedo corregir?


Saludos,

Oszkar M^
Sevilla - España
Respuesta Responder a este mensaje
#2 Héctor Miguel
15/03/2007 - 06:09 | Informe spam
hola, Oszkar !

... la grabadora de macros para... buscar un error en toda la hoja... y lo reemplace por la... que yo quiera.
El codigo generado por la grabadora de excel es el siguiente: [...]
Cells.Select
Selection.Replace What:="#¡REF!", Replacement:="Cuenta", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
El problema es que el codigo no funciona... es decir, no busca y no reemplaza.
Posteriormente puse nuevamente a grabar otra macro, pero esta vez para una region ...
y esta vez si que funciona, y es muy raro, por que comparo los codigos generados y son iguales.
Alguien me puede decir que es lo que funciona mal o como lo puedo corregir?



no comentas si donde buscas son valores constantes... o celdas con formulas que estan devolviendo errores -???-
[asumo que se trata dd valores constantes] :D

1) hay 'ciertas diferencias' en algunos comandos cuando son ejecutados desde la interfase con el usuario... y VBA :-((
[me explico]: los valores de error, p.e. el que buscas: #¡REF! PARA VBA... debes buscarlo -> 'en ingles'... -> #REF!
o sea... SIN el signo de apertura de admiracion
'esto'... suponiendo que estas buscando en VALORES [o resultados de formulas convertidos a constantes] NO en formulas ;)

2) si donde buscas son celdas con formulas que devuelven valores de error...
necesitas reemplazar una 'matriz' de los rangos con las formulas-error por un valor 'constante'

3) alternativas ?
a) si quieres sustituir celdas con formulas...
Cells.SpecialCells(xlCellTypeFormulas, xlErrors) = "Cuenta"
b) si se trata de valores ya constantes...
Cells.Replace "#ref!", "Cuenta"

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#3 Oszkar M^
15/03/2007 - 19:22 | Informe spam
Estimados Héctor y Orfao, muchas gracias por su ayuda.

La opción de Héctor (buscar el error en inglés) funciona de maravilla.

Por cierto, tengo otra inquietud. He desarrollado una serie de macros que
toman unos informes que se bajan de la contabilidad y se modifican via macros
en excel, con el fin de aplicar fórmulas, formatos, etc. En el equipo donde
desarrollé las macros, éstas funcionan perfectamente (Excel 2003), sin
embargo, le paso el archivo a otro equipo (Excel 2000) y las macros no
funcionan o fallan en algunas partes (por ejemplo en la elaboración de una
tabla dinámica). Existe alguna forma de poder pasar el archivo y abrirlo en
diferentes versiones de excel (2000 y 2003) pero que respete las macros?.

Muchas gracias de nuevo por su colaboración.

Saludos,

Oszkar M^
Sevilla - España


"Héctor Miguel" escribió:

hola, Oszkar !

> ... la grabadora de macros para... buscar un error en toda la hoja... y lo reemplace por la... que yo quiera.
> El codigo generado por la grabadora de excel es el siguiente: [...]
> Cells.Select
> Selection.Replace What:="#¡REF!", Replacement:="Cuenta", LookAt:=xlPart, _
> SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
> ReplaceFormat:=False
> End Sub
> El problema es que el codigo no funciona... es decir, no busca y no reemplaza.
> Posteriormente puse nuevamente a grabar otra macro, pero esta vez para una region ...
> y esta vez si que funciona, y es muy raro, por que comparo los codigos generados y son iguales.
> Alguien me puede decir que es lo que funciona mal o como lo puedo corregir?

no comentas si donde buscas son valores constantes... o celdas con formulas que estan devolviendo errores -???-
[asumo que se trata dd valores constantes] :D

1) hay 'ciertas diferencias' en algunos comandos cuando son ejecutados desde la interfase con el usuario... y VBA :-((
[me explico]: los valores de error, p.e. el que buscas: #¡REF! PARA VBA... debes buscarlo -> 'en ingles'... -> #REF!
o sea... SIN el signo de apertura de admiracion
'esto'... suponiendo que estas buscando en VALORES [o resultados de formulas convertidos a constantes] NO en formulas ;)

2) si donde buscas son celdas con formulas que devuelven valores de error...
necesitas reemplazar una 'matriz' de los rangos con las formulas-error por un valor 'constante'

3) alternativas ?
a) si quieres sustituir celdas con formulas...
Cells.SpecialCells(xlCellTypeFormulas, xlErrors) = "Cuenta"
b) si se trata de valores ya constantes...
Cells.Replace "#ref!", "Cuenta"

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#4 Héctor Miguel
16/03/2007 - 07:52 | Informe spam
hola, Oszkar !

... tengo otra inquietud.
He desarrollado una serie de macros que toman unos informes que se bajan de la contabilidad
y se modifican via macros en excel con el fin de aplicar formulas, formatos, etc.
En el equipo donde desarrolle las macros, estas funcionan perfectamente (Excel 2003)
sin embargo, le paso el archivo a otro equipo (Excel 2000) y las macros no funcionan o fallan en algunas partes
(por ejemplo en la elaboracion de una tabla dinamica).
Existe alguna forma de poder pasar el archivo y abrirlo en diferentes versiones de excel (2000 y 2003) pero que respete las macros?.



1) si las macros las desarrollaste en la version 2003... [probablemente]...
estas aprovechando caracteristicas 'nuevas' que no estan soportadas en versiones anteriores -?-

2) sin 'ver' [al menos] las partes de codigo donde ocurren las fallas [entre versiones]...
va a estar medio dificil poder elaborar analisis de las -posibles- fallas :))

3) [en via de mientras]... si estas importando de programas contables... [probablemente]
encontraras parte de dichas incompatibilidades en el metodo de abrir archivos de texto...
-> si estas aprovechando el argumento 'traiingminusnumbers' -?-
-> es una caracteristica [o argumento] al abrir archivos de texto NO 'soportada' hasta 2002 ;)
[se refiere a 'antiguos' programas contables que ponen el signo menos al final del numero]
1) si no tienes este 'problema'... puedes eliminar dicho argumento de tus macros ;)
2) encontraras varias formas de solucionarlo en: http://tinyurl.com/6funz

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#5 Oszkar M^
16/03/2007 - 12:24 | Informe spam
Hola Héctor, de nuevo gracias por tu interés y tu colaboración.

Revisé lo que me indicaste.

Para el caso de la importación de datos desde el programa contable, creo que
este no es el problema, ya que el mismo sistema contable hace todo el proceso
automático de bajar el archivo y dejarlo en excel; esta función o programa
contable está activado tanto en los equipos con Office 2000 como los de 2003,
con lo que el programa hace los mismos pasos en todos los equipos.

Por otra parte, el error que me causa curiosidad es cuando se genera una
tabla dinámica, ya que los demás los he modificado. El código que utilizo
para generar la tabla es el siguiente, y cuando da el error, se resalta donde
dice "DefaultVersion:=xlPivotTableVersion10".


Sub Tabla()
'
' Tabla Macro
' Macro grabada el 13/03/2007 por MP
'

'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Consulta Analítica'!R1C1:R8000C11").CreatePivotTable
TableDestination:="", _
TableName:="Tabla dinámica1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tabla
dinámica1").PivotFields("Cuenta").Subtotals = _
Array(False, False, False, False, False, False, False, False, False,
False, False, False)
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Nombre Cuenta"). _
Subtotals = Array(False, False, False, False, False, False, False,
False, False, False, _
False, False)
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Codigo
Analitico"). _
Subtotals = Array(False, False, False, False, False, False, False,
False, False, False, _
False, False)
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Nombre
Analitico"). _
Subtotals = Array(False, False, False, False, False, False, False,
False, False, False, _
False, False)
ActiveSheet.PivotTables("Tabla dinámica1").AddFields RowFields:=Array( _
"Cuenta", "Nombre Cuenta"), ColumnFields:=Array("Codigo Analitico", _
"Nombre Analitico")
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Debe")
.Orientation = xlDataField
.Caption = "Suma de Debe"
.Function = xlSum
End With
ActiveWindow.Zoom = 85
ActiveWindow.Zoom = 70
Cells.Select
Cells.EntireColumn.AutoFit
Range("C13").Select

Cells.Select
Cells.EntireColumn.AutoFit
Range("O20").Select

ActiveSheet.Select
ActiveSheet.Name = "Tabla"
End Sub


Crees que podría cambiar esa línea por otra cosa y que la macro funcione bien?

De nuevo muchas gracias por tu amable colaboración.
Saludos,

Oszkar M^
Sevilla - España


"Héctor Miguel" escribió:

hola, Oszkar !

> ... tengo otra inquietud.
> He desarrollado una serie de macros que toman unos informes que se bajan de la contabilidad
> y se modifican via macros en excel con el fin de aplicar formulas, formatos, etc.
> En el equipo donde desarrolle las macros, estas funcionan perfectamente (Excel 2003)
> sin embargo, le paso el archivo a otro equipo (Excel 2000) y las macros no funcionan o fallan en algunas partes
> (por ejemplo en la elaboracion de una tabla dinamica).
> Existe alguna forma de poder pasar el archivo y abrirlo en diferentes versiones de excel (2000 y 2003) pero que respete las macros?.

1) si las macros las desarrollaste en la version 2003... [probablemente]...
estas aprovechando caracteristicas 'nuevas' que no estan soportadas en versiones anteriores -?-

2) sin 'ver' [al menos] las partes de codigo donde ocurren las fallas [entre versiones]...
va a estar medio dificil poder elaborar analisis de las -posibles- fallas :))

3) [en via de mientras]... si estas importando de programas contables... [probablemente]
encontraras parte de dichas incompatibilidades en el metodo de abrir archivos de texto...
-> si estas aprovechando el argumento 'traiingminusnumbers' -?-
-> es una caracteristica [o argumento] al abrir archivos de texto NO 'soportada' hasta 2002 ;)
[se refiere a 'antiguos' programas contables que ponen el signo menos al final del numero]
1) si no tienes este 'problema'... puedes eliminar dicho argumento de tus macros ;)
2) encontraras varias formas de solucionarlo en: http://tinyurl.com/6funz

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida