excel - valor - Copiar y pegar datos usando el código VBA
macro para copiar formulas hacia abajo (2)
Use el método PasteSpecial:
sht.Columns("A:G").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
PERO su gran problema es que está cambiando su ActiveSheet a "Datos" y no lo está cambiando. No necesita hacer el Activar y Seleccionar, según mi código (esto supone que su botón está en la hoja en la que desea copiar).
Tengo un botón en una hoja de cálculo que, cuando se presiona, debe permitir al usuario abrir un archivo, luego copiar las columnas AG de la hoja de cálculo "Datos", luego pegar los datos de esas columnas en la hoja actual.
Tengo un error de lógica en el código; se ejecuta, pero pega la selección en el lugar equivocado.
Tengo problemas para hacer referencia a los dos libros de trabajo.
Aquí está mi código:
Sub Button1_Click()
Dim excel As excel.Application
Dim wb As excel.Workbook
Dim sht As excel.Worksheet
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = False
f.Show
Set excel = CreateObject("excel.Application")
Set wb = excel.Workbooks.Open(f.SelectedItems(1))
Set sht = wb.Worksheets("Data")
sht.Activate
sht.Columns("A:G").Select
Selection.Copy
Range("A1").Select
ActiveSheet.Paste
wb.Close
End Sub
"Entonces, a partir de esta discusión, estoy pensando que este debería ser el código entonces".
Sub Button1_Click()
Dim excel As excel.Application
Dim wb As excel.Workbook
Dim sht As excel.Worksheet
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = False
f.Show
Set excel = CreateObject("excel.Application")
Set wb = excel.Workbooks.Open(f.SelectedItems(1))
Set sht = wb.Worksheets("Data")
sht.Activate
sht.Columns("A:G").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
wb.Close
End Sub
''Avíseme si esto es correcto o si se omite un paso. Gracias.