Copiar - Pegar valores en codigo

27/04/2009 - 23:38 por faico | Informe spam
Hola Grupo,

Hace tiempo que no escribía...

Tengo el siguiente código que copia y pega una serie de celdas de un
documento a otro pero lo que necesitaría es que copie y pegue VALORES
unicamente

Sabe alguien como cambier el codigo?

Sub Botón3_AlHacerClic()
Dim strArchivo As String
Dim oLibro As Workbook
strArchivo = "E:\Lugar\del\documento\Clientes_2008.xls"
If Dir(strArchivo) = "" Then
MsgBox "No existe el archivo en la ruta indicada."
Exit Sub
End If
Application.ScreenUpdating = False
On Error Resume Next
Set oLibro = Workbooks(Dir(strArchivo))
On Error GoTo 0
If oLibro Is Nothing Then Set oLibro = Workbooks.Open(strArchivo)
oLibro.Worksheets("HOJA1").Range("A2:A39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range
("D7")
oLibro.Worksheets("HOJA1").Range("B2:B39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range
("E7")
oLibro.Worksheets("HOJA1").Range("B2:B39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range
("F7")
oLibro.Worksheets("HOJA1").Range("C2:D39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range
("G7")
oLibro.Worksheets("HOJA1").Range("F2:J39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range
("I7")
oLibro.Worksheets("HOJA1").Range("M2:O39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range
("N7")
oLibro.Close False
Set oLibro = Nothing
Application.ScreenUpdating = True
End Sub

Muchas gracias!
Hasta pronto

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
28/04/2009 - 06:06 | Informe spam
hola, nacho !

prueba con las siguientes adaptaciones:

Sub Botón3_AlHacerClic()
Dim Archivo As String, Destino As Range, nFilas as Integer
Archivo = "E:\Lugar\del\documento\Clientes_2008.xls"
Application.ScreenUpdating = False
On Error Resume Next
Debug.Print Workbooks(Dir(Archivo)).Type
If Err Then
On Error GoTo 0
If Dir(strArchivo) = "" Then
MsgBox "No existe el archivo en la ruta indicada."
Exit Sub
Else: Workbooks.Open Archivo
End If
End If
Set Destino = Workbooks("reporting worldwide.xls").Worksheets("bd").Range("d7")
Workbooks(Dir(Archivo)).Activate
With Worksheets("hoja1").Range("a2:a39"): nFilas = .Rows.Count
Destino.Resize(nFilas, 2).Value = .Resize(, 2).Value
Destino.Offset(, 2).Resize(nFilas, 3).Value = .Offset(, 1).Resize(, 3).Value
Destino.Offset(, 5).Resize(nFilas, 5).Value = .Offset(, 5).Resize(, 5).Value
Destino.Offset(, 10).Resize(nFilas, 3).Value = .Offset(, 12).Resize(, 3).Value
End With
ActiveWorkbook.Close False
Set Destino = Nothing
End Sub

saludos,
hector.

__ OP __
Tengo el siguiente codigo que copia y pega una serie de celdas de un documento a otro
pero lo que necesitaría es que copie y pegue VALORES unicamente

Sabe alguien como cambier el codigo?

Sub Botón3_AlHacerClic()
Dim strArchivo As String
Dim oLibro As Workbook
strArchivo = "E:\Lugar\del\documento\Clientes_2008.xls"
If Dir(strArchivo) = "" Then
MsgBox "No existe el archivo en la ruta indicada."
Exit Sub
End If
Application.ScreenUpdating = False
On Error Resume Next
Set oLibro = Workbooks(Dir(strArchivo))
On Error GoTo 0
If oLibro Is Nothing Then Set oLibro = Workbooks.Open(strArchivo)
oLibro.Worksheets("HOJA1").Range("A2:A39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("D7")
oLibro.Worksheets("HOJA1").Range("B2:B39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("E7")
oLibro.Worksheets("HOJA1").Range("B2:B39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("F7")
oLibro.Worksheets("HOJA1").Range("C2:D39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("G7")
oLibro.Worksheets("HOJA1").Range("F2:J39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("I7")
oLibro.Worksheets("HOJA1").Range("M2:O39").Copy _
Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("N7")
oLibro.Close False
Set oLibro = Nothing
Application.ScreenUpdating = True
End Sub
Respuesta Responder a este mensaje
#2 faico
28/04/2009 - 14:59 | Informe spam
On 28 abr, 06:06, "Héctor Miguel"
wrote:
hola, nacho !

prueba con las siguientes adaptaciones:

Sub Botón3_AlHacerClic()
  Dim Archivo As String, Destino As Range, nFilas as Integer
  Archivo = "E:\Lugar\del\documento\Clientes_2008.xls"
  Application.ScreenUpdating = False
  On Error Resume Next
  Debug.Print Workbooks(Dir(Archivo)).Type
  If Err Then
    On Error GoTo 0
    If Dir(strArchivo) = "" Then
      MsgBox "No existe el archivo en la ruta indicada."
      Exit Sub
    Else: Workbooks.Open Archivo
    End If
  End If
  Set Destino = Workbooks("reporting worldwide.xls").Worksheets("bd").Range("d7")
  Workbooks(Dir(Archivo)).Activate
  With Worksheets("hoja1").Range("a2:a39"): nFilas = .Rows.Count
    Destino.Resize(nFilas, 2).Value = .Resize(, 2).Value
    Destino.Offset(, 2).Resize(nFilas, 3).Value = .Offset(, 1).Resize(, 3).Value
    Destino.Offset(, 5).Resize(nFilas, 5).Value = .Offset(, 5).Resize(, 5).Value
    Destino.Offset(, 10).Resize(nFilas, 3).Value = .Offset(, 12).Resize(, 3).Value
  End With
  ActiveWorkbook.Close False
  Set Destino = Nothing
End Sub

saludos,
hector.

__ OP __
Tengo el siguiente codigo que copia y pega una serie de celdas de un documento a otro
pero lo que necesitaría es que copie y pegue VALORES unicamente

Sabe alguien como cambier el codigo?

Sub Botón3_AlHacerClic()
Dim strArchivo As String
    Dim oLibro As Workbook
    strArchivo = "E:\Lugar\del\documento\Clientes_2008.xls"
    If Dir(strArchivo) = "" Then
        MsgBox "No existe el archivo en la ruta indicada."
        Exit Sub
    End If
    Application.ScreenUpdating = False
    On Error Resume Next
    Set oLibro = Workbooks(Dir(strArchivo))
    On Error GoTo 0
    If oLibro Is Nothing Then Set oLibro = Workbooks.Open(strArchivo)
    oLibro.Worksheets("HOJA1").Range("A2:A39").Copy _
        Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("D7")
    oLibro.Worksheets("HOJA1").Range("B2:B39").Copy _
        Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("E7")
    oLibro.Worksheets("HOJA1").Range("B2:B39").Copy _
        Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("F7")
    oLibro.Worksheets("HOJA1").Range("C2:D39").Copy _
        Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("G7")
    oLibro.Worksheets("HOJA1").Range("F2:J39").Copy _
        Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("I7")
    oLibro.Worksheets("HOJA1").Range("M2:O39").Copy _
        Workbooks("Reporting WorldWide.xls").Worksheets("BD").Range("N7")
    oLibro.Close False
    Set oLibro = Nothing
    Application.ScreenUpdating = True
End Sub



Muchas gracias Hector,

Esta noche lo pruebo y te comento

Saludos,
nacho
Respuesta Responder a este mensaje
#3 faico
28/04/2009 - 20:11 | Informe spam
Hola Hector,

Me sale un error '13' de tiempo de ejecucion por la linea If Dir
(strArchivo) = "" Then

No habría algo mas simple donde cambiando en mi codigo original en vez
de

oLibro.Worksheets("HOJA1").Range("B2:B39").Copy _

poner

oLibro.Worksheets("HOJA1").Range("B2:B39").CopyValues _


Alguna otra idea?

Muchas gracias
nacho
Respuesta Responder a este mensaje
#4 Héctor Miguel
28/04/2009 - 21:14 | Informe spam
hola, nacho !

Me sale un error '13' de tiempo de ejecucion por la linea If Dir (strArchivo) = "" Then
No habria algo mas simple donde cambiando en mi codigo original en vez de
oLibro.Worksheets("HOJA1").Range("B2:B39").Copy _
poner
oLibro.Worksheets("HOJA1").Range("B2:B39").CopyValues _



(hasta donde se) no hay forma "simple" de pegar-solo-valores
y el error se debio a una "mezcla" que hice de tu codigo con mis "ideas" :-((

notaras que cambie el nombre de la variable de "strArchivo" a (simplemente) "Archivo"
o sea, modifica la linea que se me quedo atorada en la mezcla:
de: -> If Dir (strArchivo) = "" Then
a: -> If Dir (Archivo) = "" Then

saludos,
hector.
Respuesta Responder a este mensaje
#5 faico
28/04/2009 - 22:27 | Informe spam
On 28 abr, 21:14, "Héctor Miguel"
wrote:
hola, nacho !

> Me sale un error '13' de tiempo de ejecucion por la linea If Dir (strArchivo) = "" Then
> No habria algo mas simple donde cambiando en mi codigo original en vez de
> oLibro.Worksheets("HOJA1").Range("B2:B39").Copy _
> poner
> oLibro.Worksheets("HOJA1").Range("B2:B39").CopyValues _

(hasta donde se) no hay forma "simple" de pegar-solo-valores
y el error se debio a una "mezcla" que hice de tu codigo con mis "ideas"    :-((

notaras que cambie el nombre de la variable de "strArchivo" a (simplemente) "Archivo"
o sea, modifica la linea que se me quedo atorada en la mezcla:
de: -> If Dir (strArchivo) = "" Then
  a: -> If Dir (Archivo) = "" Then

saludos,
hector.



Gracias crack, le echo un ojo y te comento
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida