Ayuda! Cambio de nombre el libro de excel y el macro ya no anda! Error subíndice

Buenas!! Estoy creando macros y estoy con un problema que me esta volviendo loco!!!

Aviso que soy nuevo en esto...

El error es el siguiente.. Cree un macro que los datos de la hoja, los copia y los pega en otra hoja, simple.

Ahora el problema es el siguiente.. A la hoja donde copio los datos( la hoja base) la voy guardando con distintos nombres... Una vez q le pongo guarda como.. Y le cambio el nombre, la macro deja de funcionar... Por favor si alguien me ayuda les seré muy agradecido!!!!

se las copio por si quieren verla...

Sub VOUCHER()
'
' VOUCHER Macro
' Macro grabada el 02/12/2013 por Ayi y Dye
'
'
Workbooks.Open Filename:= _
"C:\Users\Ayi y Dye\Desktop\Para mandar\Voucher\Voucher.xls"
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Windows("Voucher.xls").Activate
Range("D26:G26").Select
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Range("P14").Select
Selection.Copy
Windows("Voucher.xls").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("D25:G25").Select
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Range("AU14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Voucher.xls").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("D24:G24").Select
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Sheets("RESERVA").Select
ActiveWindow.SmallScroll Down:=-12
Range("M8").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Voucher.xls").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("D23:G23").Select
Windows("FICHA NUEVA TERMINADA III.xls").Activate
ActiveWindow.SmallScroll Down:=9
Range("B32").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Voucher.xls").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("D22:G22").Select
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Range("A38").Select
Sheets("INFO").Select
Range("AI14:AJ14").Select
Sheets("RESERVA").Select
Range("H27").Select
Sheets("INFO").Select
Range("AI14:AJ14").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("RESERVA").Select
Windows("Voucher.xls").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Sheets("INFO").Select
Range("AG14:AH14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Voucher.xls").Activate
Range("D21:G21").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("FICHA NUEVA TERMINADA III.xls").Activate
ActiveWindow.SmallScroll Down:=-6
Sheets("RESERVA").Select
Range("B17").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Voucher.xls").Activate
Range("D15:G15").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("D16:G16").Select
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Range("B18").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Voucher.xls").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("D17:G17").Select
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Range("B22").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Voucher.xls").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("D18:G18").Select
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Range("B19").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Voucher.xls").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Range("B20").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Voucher.xls").Activate
Range("D19:G19").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Range("B21").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Voucher.xls").Activate
Range("D20:G20").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("FICHA NUEVA TERMINADA III.xls").Activate
Windows("Voucher.xls").Activate
End Sub

probé de eliminar las líneas Windows("FICHA NUEVA TERMINADA III.xls").Activate pero no hay caso.. Sigue sin funcionar..

Ojala me ayuden.. Gracias!!!!

1 Respuesta

Respuesta
1

A ver si es así:

Primero que copias de libro a libro, no de hoja a hoja.

Si la macro está en el libro FICHA NUEVA... y éste es el que cambia de nombre, lo que tenés que hacer antes de abrir el 2do libro (Voucher), guardar el nombre del libro activo en una variable, y luego usas esa variable.

Por ej;:

libro1 = activeworkbook.Name

Workbooks.Open Filename:= _
"C:\Users\Ayi y Dye\Desktop\Para mandar\Voucher\Voucher.xls"
'Windows("FICHA NUEVA TERMINADA III.xls").Activate 'esta no va
'el libro que se abre es el que queda como activo, no haría falta esta línea Windows("Voucher.xls").Activate.

Range("D26:G26").Select

'ahora activas tu libro

Workbooks(libro1). Activate

Y así cada vez que necesitas mencionar al libro FICHAS.

Si esto resuelve tu problema no olvides finalizar las 2 consultas.

Hola!! Mil gracias por la pronta respuesta!!! no me imagine que seria tan rapido..

Modifique un poco la macro para que sea mas corta..

Entiendo lo que me decís... pero no entendí como modificarla o no se como hacerlo..

Ya que las macros que realicé las hice con la opción herramienta>macro>grabar nueva macro>detener macro

Por lo que entendí, debería antes de abrir el 2°libro (voucher) donde copio las cosas, debo guardar el nombre del libro activo(FICHA NUEVA TERMINADA III) en una variable pero no se como hacerlo.

te copio el código que lo hice mas corto por si quieres verlo.

Te doy muchas gracias por prestar atención a mis preguntas!!

El código seria este:

Sub VOUCHERDEFINITIVO()
'
' VOUCHERDEFINITIVO Macro
' Macro grabada el 03/12/2013 por Ayi y Dye
'
'
ChDir "C:\Users\Ayi y Dye\Desktop\Para mandar\Voucher"
Workbooks.Open Filename:= _
"C:\Users\Ayi y Dye\Desktop\Para mandar\Voucher\Voucher.xls"
Windows("FICHA NUEVA TERMINADA III.xls").Activate
ActiveWindow.SmallScroll Down:=15
Range("R29").Select
Selection.Copy
Range("R29:R40").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Voucher.xls").Activate
Range("D15:G15").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-9
Windows("FICHA NUEVA TERMINADA III.xls").Activate
ActiveWindow.SmallScroll Down:=-45
Windows("Voucher.xls").Activate
ActiveWindow.SmallScroll Down:=-3
End Sub

Respuesta a 'no se como hacerlo': leyendo con atención mi respuesta que reitero:

libro1 = activeworkbook.Name 'justo x encima de la apertura del libro voucher
Workbooks.Open Filename:= _
"C:\Users\Ayi y Dye\Desktop\Para mandar\Voucher\Voucher.xls"

Aquí te dejo el encabezado de tu rutina ORIGINAL (no hace falta agregar la línea del ChDir

Sub VOUCHER()
'ajustada x Elsamatilde

libro1 = activeworkbook.Name

Workbooks.Open Filename:= _
"C:\Users\Ayi y Dye\Desktop\Para mandar\Voucher\Voucher.xls"
'el libro que se abre es el que queda como activo, no haría falta esta línea Windows("Voucher.xls").Activate.
Range("D26:G26").Select
'ahora activas tu libro
Workbooks(libro1).Activate

Y a partir de aquí, en cada línea donde mencionas FICHA NUEVA..., la dejas como esta última.

PD) tampoco hacen falta las líneas de Scroll si luego seleccionas una celda, x ej:

ActiveWindow.SmallScroll Down:=15 'esta no va, se genera con la grabadora pero luego en el código ya te posicionás donde necesita´s
Range("R29").Select



Te doy las mil gracias!! por las tan prontas respuestas!! pude resolverlo!!!

gracias también por los scroll son cosas mínimas pero en una macro mas extensa ocupan lugar !!

Nuevamente te agradezco y seguramente vuelva a contactarme ya que hace poco empecé con el mundo de las macros y seguramente se me generen mas dudas!!

Saludos!!!!!

Diego<<<<<<<<<<<<<<<<<

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas