Copiar Hoja, Guardar, Romper vínculo y abrir

¿Qué tal Experto, espero te encuentres bien, oye ya copie una macro para copiar y guardar una hoja de excel, pero ahora lo que quiero es abrir esa hoja que estoy copiando y romper el vínculo que la une a la hoja original, para poderla mandar por correo, es eso posible? De antemano te agradezco tu atención. Te anexo la rutina:
Dim CARPETA As String
CARPETA = "C:\Documents and Settings\All Users\Documents\FAM\PEDPROV\"
Dim wb As Workbook
'En la variable guarda la celda con nbre de cliente
nvaFact = Sheets("[email protected]").Range("C7").Value & "-" & Sheets("[email protected]").Range("L3").Value
'copio la hoja activa FACT
Sheets("[email protected]").Copy
' guarda esa hoja con el nombre de la variable y cierra el libro
'inhabilitamos el movimiento de hojas
Application.DisplayAlerts = False
'creamos un nuevo objeto Libro
Set wb = ActiveWorkbook
With wb
'guardamos el libro en la misma carpeta y con nombre = variable
.SaveAs CARPETA & nvaFact & ".xls"
'cerramos el libro
.Close
End With
'se libera el objeto
Set wb = Nothing
End Sub

1 Respuesta

Respuesta
1
Colocá esta instrucción justo debajo del:
With wb
Reemplazá el nombre del libro original (en mi ejemplo: Facturas.xls)
.BreakLink Name:= _
"C:\Documents and Settings\All Users\Documents\FAM\PEDPROV\Factura.xls" _
, Type:=xlExcelLinks
Excelente respuesta, ahora manejo la fórmula "=hoy()" para la fecha, cómo le hago para que al hacer todo el procedimiento anterior se quede sólo la fecha y no la fórmula para en caso de consultar después ese archivo no se actualice la fecha. Gracias
¿Qué crees, pegué tal y cómo pusiste la instrucción y al ejecutar me aparece "Se ha producido el error '1004' en tiempo de ejecución. Error definido por la aplicación o el objeto" Que hice mal? Gracias
¿Ajustaste el nombre de tu libro?
Colocá encima de With wb esta instrucción:
on error resume next
Esto evitará que se interrumpa ante un error. Es probable que si el libro no tiene vínculos presente error.
La rutina que me envías parece incompleta. Con respecto a lo de pegar solo valor y no fórmula estas son las instrucciones para colocar después de la copia. Adaptalas a tus datos:
sheets("tuhojadestino").select
Activesheet. Range("tucelda"). Copy
Selection. Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Cuando tengas todo armado y si no funciona, intentá realizar todos los pasos con la grabadora. Al detenerla en un módulo encontrarás la rutina que te puede guiar para ajustar la tuya.
Hijole, espero me tengas paciencia, porque no soy muy bueno en esto, ya hice lo que me dijiste y no rompe el vínculo, te pego la instrucción, me comentas que está incompleta, ¿qué le falta?
Dim CARPETA As String
CARPETA = "C:\Documents and Settings\All Users\Documents\FAM\PEDPROV\"
Dim wb As Workbook
'En la variable guarda la celda con nbre de cliente
nvaFact = Sheets("[email protected]").Range("C7").Value & "-" & Sheets("[email protected]").Range("L3").Value
'copio la hoja activa FACT
Sheets("[email protected]").Copy
' guarda esa hoja con el nombre de la variable y cierra el libro
'inhabilitamos el movimiento de hojas
Application.DisplayAlerts = False
'creamos un nuevo objeto Libro
Set wb = ActiveWorkbook
On Error Resume Next
With wb
.BreakLink Name:= _
"C:\Documents and Settings\All Users\Documents\FAM\PEDPROV\FAMSYS.xls" _
, Type:=xlExcelLinks
'guardamos el libro en la misma carpeta y con nombre = variable
.SaveAs CARPETA & nvaFact & ".xls"
'cerramos el libro
.Close
End With
'se libera el objeto
Set wb = Nothing
End Sub
Y para lo del valor, me pones "Hojadestino" pero ésta la genera la acción anterior, ¿qué tengo que poner ahí?
¿Por último cómo detengo la grabadora en un módulo? Muchas Gracias
Te dejo la rutina que yo utilicé y no presentó errores.
Sub copiando()
Dim CARPETA As String
CARPETA = "C:\Documents and Settings\All Users\Documents\FAM\PEDPROV\"
Dim wb As Workbook
'En la variable guarda la celda con nbre de cliente
nvaFact = Sheets("[email protected]").Range("C7").Value & "-" & Sheets("[email protected]").Range("L3").Value
'copio la hoja activa FACT
Sheets("[email protected]").Copy
' guarda esa hoja con el nombre de la variable y cierra el libro
'inhabilitamos el movimiento de hojas
Application.DisplayAlerts = False
'creamos un nuevo objeto Libro
Set wb = ActiveWorkbook
'On Error Resume Next
With wb
.BreakLink Name:= _
"C:\Documents and Settings\All Users\Documents\FAM\PEDPROV\FAMSYS.xls" _
, Type:=xlExcelLinks
'elimina formula de fecha/hora en hoja destino -AJUSTAR REFERENCIA
.Sheets("Hoja1").Range("A4").Copy
.Sheets("Hoja1").Range("A4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'guardamos el libro en la misma carpeta y con nombre = variable
.SaveAs CARPETA & nvaFact & ".xls"
'cerramos el libro
.Close
End With
'se libera el objeto
Set wb = Nothing
End Sub
Si no lo solucionás, comentame en qué línea te presenta el error y con qué versión estás trabajando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas