Espero que haya una manera de resolver uno de un proceso que consume mucho tiempo y que actualmente realizo manualmente.
Recopila información de más de 30 personas que me enviaron su excel (formato xlsx). Hasta ahora, he estado abriendo cada archivo, localizando las hojas nombradas de cierta manera (por ejemplo, las hojas que contenían la palabra "Plan" en su nombre), copié las hojas encontradas en un libro nuevo y guardé el libro recién creado en una ubicación específica.
¿Se puede automatizar este proceso mediante el uso de macro? Idealmente, me gustaría una macro que copie las hojas que incluyen "plan" en el nombre de la hoja y sin abrir varios libros, copia las hojas de trabajo seleccionadas que se encuentran en todos los archivos guardados en una sola carpeta y pega esas hojas en un libro nuevo. ¿Es esto posible lograr?
Tengo el código de abajo, pero cuando ejecuto esta macro, no pasa nada. ¿Puedes ver lo que está causando el problema?
Sub CopyWorkSheets(strDirectory As String, strSheetName As String)
Dim xlThisWB As Workbook
Dim xlWB As Workbook
Dim xlWS As Worksheet
Dim strFileName As String
Dim iCount As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
On Error Resume Next
Set xlThisWB = ThisWorkbook
strFileName = Dir(strDirectory & "*.xlsx")
Do While strFileName <> ""
If strFileName <> xlThisWB.Name Then
With xlThisWB
Set xlWB = Workbooks.Open(Filename:=strDirectory & strFileName)
Set xlWS = xlWB.Worksheets(strSheetName)
xlWS.Copy after:=xlThisWB.Worksheets(xlThisWB.Worksheets.Count)
xlWB.Close
End With
End If
strFileName = Dir()
Loop
On Error GoTo 0
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub
fuente
Respuestas:
Agregue los procedimientos a continuación en un nuevo módulo estándar y ejecute Copiar hojas de trabajo ():
Después de ejecutarlo, verás un nuevo archivo en la carpeta dest.
Plans 2017-07-27 07-30.xlsx
(basado en la fecha)Su código inicial debe llamarse con una línea como
CopyWorkSheets "D:\Test1\", "FileName.xlsx"
pero no itera sobre todos los archivos y no busca nombres de hojas que contengan "Planes" en el nombrefuente