In questo articolo, creeremo una macro per copiare le celle in tutte le cartelle di lavoro in una cartella.

Abbiamo utilizzato alcuni file Excel di esempio come dati grezzi. Questi file contengono i dettagli delle presenze dei dipendenti. Ogni file contiene data, ID dipendente e nome dei dipendenti. Vogliamo aggiungere intestazioni a tutti i file all’interno della cartella.

ArrowMain

ArrowFilesInFolder

ArrowRawData

Quando si esegue la macro, i dati nell’intervallo da H8 a J10 verranno incollati come intestazione in tutti i fogli Excel all’interno della cartella.

ArrowOutput

Spiegazione del codice

FolderPath = Sheet1.TextBox1.Value Il codice precedente viene utilizzato per assegnare un valore nella casella di testo per menzionare la variabile.

Dir (FolderPath & “* .xlsx”)

Il codice sopra viene utilizzato per ottenere il nome del file del primo file all’interno del percorso della cartella specificato.

Mentre FileName <> “”

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

FileArray (Count1) = FileName FileName = Dir ()

Wend Il codice precedente viene utilizzato per creare un array di stringhe. Contiene i nomi dei file di tutti i file all’interno della cartella.

Workbooks.Open (FolderPath & FileArray (i))

Il codice precedente viene utilizzato per aprire la cartella di lavoro specificata.

SourceWB.Worksheets (1) .Range (“H8: J10”). Copia DestWB.Worksheets (1) .Range (“A1: C3”)

Il codice sopra viene utilizzato per copiare l’intestazione dalla cartella di lavoro principale ad altre cartelle di lavoro.

Segui sotto per il codice

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

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]