En este artículo, crearemos una macro para copiar celdas a todos los libros de trabajo en una carpeta.

Hemos utilizado algunos archivos de ejemplo de Excel como datos sin procesar. Estos archivos contienen detalles de asistencia de los empleados. Cada archivo contiene la fecha, la identificación del empleado y el nombre de los empleados. Queremos agregar encabezados a todos los archivos dentro de la carpeta.

ArrowMain

ArrowFilesInFolder

ArrowRawData

Al ejecutar la macro, los datos en el rango de H8 a J10 se pegarán como encabezado en todas las hojas de Excel dentro de la carpeta.

ArrowOutput

Explicación del código

FolderPath = Sheet1.TextBox1.Value El código anterior se usa para asignar un valor en el cuadro de texto para mencionar la variable.

Dir (Ruta de carpeta & «* .xlsx»)

El código anterior se utiliza para obtener el nombre de archivo del primer archivo dentro de la ruta de la carpeta especificada.

Mientras FileName <> «»

Count1 = Count1 + 1 ReDim Preserve FileArray (1 para Count1)

FileArray (Count1) = FileName FileName = Dir ()

Wend El código anterior se utiliza para crear una matriz de cadenas. Contiene los nombres de todos los archivos dentro de la carpeta.

Workbooks.Open (FolderPath & FileArray (i))

El código anterior se utiliza para abrir el libro de trabajo especificado.

SourceWB.Worksheets (1) .Range («H8: J10»). Copiar DestWB.Worksheets (1) .Range («A1: C3»)

El código anterior se usa para copiar el encabezado del libro de trabajo principal a otros libros de trabajo.

Siga el código a continuación

Option Explicit

Sub CopyingDataToFilesInFolder()

'Declaring variables

Dim FileName, FolderPath, FileArray() As String

Dim Count1, i As Integer

Dim SourceWB, DestWB As Workbook

'Getting folder path from the text box

FolderPath = Sheet1.TextBox1.Value

If Right(FolderPath, 1) <> "\" Then

FolderPath = FolderPath & "\"

End If

'Getting the file name from the folder

FileName = Dir(FolderPath & "*.xlsx")

Count1 = 0

'Creating an array which consists of file name of all files in the folder

While FileName <> ""

Count1 = Count1 + 1

ReDim Preserve FileArray(1 To Count1)

FileArray(Count1) = FileName

FileName = Dir()

Wend

Set SourceWB = ThisWorkbook

For i = 1 To UBound(FileArray)



'Opening the workbook

Set DestWB = Workbooks.Open(FolderPath & FileArray(i))



'Pasting the required header

SourceWB.Worksheets(1).Range("H8:J10").Copy DestWB.Worksheets(1).Range("A1:C3")



'Closing the workbook

DestWB.Close True

Next

Set DestWB = Nothing

Set SourceWB = Nothing

End Sub

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]