Como utilizar una macro en otras hojas de excel

Hola ElsaMatilde,
Tengo un problema que ojala me puedas ayudar a resolver.
Tengo una macro que funciona muy bien, y la tengo grabada en la hoja1 de un archivo de excel Macro.xls por ejemplo. PEro cuando quiero utilizar en otro archivo de excel me da un error que puede ser.

1 respuesta

Respuesta
1
Antes de empezar aclaremos bien los conceptos:
¿1 macro grabada en 1 hoja que debe ser utilizada en otras hojas (como dice el titulo) o en otro archivo (libro)?
Aclarame bien la idea y escribime también la macro, porque si está ubicada en 1 hoja seguramente tiene instrucciones como Target, pero si está en un módulo del libro hará referencia a las celdas (Range, Cell, Activecell. Etc)
Sdos
Elsa
* Te sugiero leer todos estos conceptos en la sección Macros de mi sitio
La macro debe funcionar en otros archivos.
Esta es la macro:
Sub Cuentas_Virtuales()
Dim aux1, contador1 As Double
Worksheets.Add
ActiveSheet.Name = "Cuentas Virtuales"
Worksheets("CAMPAÑAS").Activate
ActiveSheet.Range("A1:AD1").Select
Selection.Copy
Worksheets("Cuentas Virtuales").Activate
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveSheet.Cells(2, "A").Select
Worksheets("CAMPAÑAS").Activate
ActiveSheet.Cells.Select
Selection.Sort Key1:=Range("E1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ActiveSheet.Columns("E:E").Select
Selection.Find(What:="EASYPAGO", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
aux1 = ActiveCell.Row
contador1 = ActiveCell.Row
Do While ActiveSheet.Cells(contador1, 5).Value = "EASYPAGO"
contador1 = contador + 1
Loop
ActiveSheet.Range(Cells(aux1, "A"), Cells(contador1, "AD")).Select
Selection.Copy
Worksheets("Cuentas Virtuales").Activate
ActiveSheet.Paste
Worksheets("CAMPAÑAS").Activate
Application.CutCopyMode = False
ActiveSheet.Cells(1, 2).Value = contador1
End Sub
Esta es una macro que separa a todos los registros que tienen EASYPAGO en la columna E. Ojala me puedas ayudar.
Bien, tu macro entonces trabaja en 1 libro (archivo) donde 1 de sus hojas se llama CAMPAÑAS y la otra que se agrega se llama 'Cuentas Virtuales'.
Si esa macro querés utilizarla en otro libro, donde tenga los mismos nombres de hojas, solo tenés que copiarla y pegarla en un módulo del otro libro.
Si en cambio querés que se ejecute para alguna hoja de otro libro, previamente tenés que abrirlo. Aquí te recomiendo entonces que guardes en variables los nombres de los libros utilizados.
Por ej:
Sub Cuentas_Virtuales()
Dim aux1, contador1 As Double
Libro1 = activeworkbook.name
Workbooks.open "C:\Documents and Settings\......\LibroCuentas.xls"
'pasa a ser el libro activo
Libro2= activeworkbook.name
'ahora ya tenés los 2 libros abiertos y hasta aquí el activo es el 2do.
Solo te resta agregar el nombre del libro, además de la hoja, dependiendo qué quieras hacer. Por ej:
Workbooks(Libro1). Activate 'para pasar a otro libro
Workbooks(Libro2). Worksheets. Add 'para crear 1 hoja en el 2do libro
Y así con cada línea. No me extiendo más porque no sé si esa es la idea de lo que estás consultando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas