Saltar al contenido

Ejecutar macro dependiendo del nombre de la Hoja


Recommended Posts

publicado

Buen día a todos;

Estoy trabajando en un proyecto donde es necesario actualizar algunos datos sobre ciertas hojas de excel (cerca de 30 hojas), el libro en total contendrá unas 75 hojas.

Existe cierta constante sobre el nombre de las hojas donde se debe de actualizar la información, por ejemplo: las hojas donde deseo ejecutar la macro comienzan con MEX0 y despues se les asignan otro tipo de digitos como MEX0A0023, MEX0A0023-1, MEX0A0023-1A, etc, entonces la constante en el nombre es MEX0

Estaba pensando en utilizar alguna función como:

Dim Hoja As String

For Each Hoja In Worksheets

Aquí es donde me pierdo, quisiera agregar un Like o algo como contiene,

Aqui iría la Macro

Next

Me pueden echar una mano para liberarme de muchas horas de trabajo repetitivo por favor jejeje!! :mushroom:

Mcuhas gracias de antemano.

Saludos.

publicado


For Each Hoja In Worksheets
[B]
If Left(Hoja.Name, 4) = "MEX0" Then[/B]
[COLOR=#008000] 'Aquí la macro[/COLOR]
[B] End If[/B]

Next


[/CODE]

publicado

Hola Marco Antonio,

Muchas gracias por tu pronta respuesta, estoy colocando tal cual me lo indicaste, pero la macro solo trabaja sobre la primer hoja, no se sigue ejecutando en las demas, este el codigo que tengo:

For Each Hoja In Worksheets

If Left(Hoja.Name, 4) = "MEX0" Then

Range("J168").Select

Selection.Copy

Range("H168").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

End If

Next

Que podrá estar mal?

Saludos.

publicado

Hola:

Como veo que vas un poco despistado, prueba con:



Private Sub Workbook_Open()
Dim Hoja As Worksheet


For Each Hoja In Worksheets
If Left(Hoja.Name, 4) = "[COLOR=#0000cd]MEX0[/COLOR]" Then
Hoja.Range("[COLOR=#0000cd]H168[/COLOR]").Value = Hoja.Range("[COLOR=#0000cd]J168[/COLOR]").Value
End If
Next

End Sub


[/CODE]

publicado

Ujuuuuuu!!

Muchisimas gracias, de verdad que con esto me ahorran mas de 20min por cada actualización que se hace sobre el file.

El código quedo de la siguiente manera ya funcionando:

For Each Sheet In ActiveWorkbook.Sheets

If Left(Sheet.Name, 9) = "MEX0" Then

Sheet.Select

Aqui es donde va la macro

Enf If

Next

Espero que si alguien tiene algún caso similar les funcione.

Muchas gracias por el apoyo, seguimos en contacto.

Saludos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.