Exportar la Hoja de Tareas de un documento de Microsoft Project

Necesito su apoyo desarrollando una macro para Microsoft Project que exporte todos los datos de una hoja de tarea, a un nuevo documento de Excel que tenga el mismo contenido y el mismo número de columnas del documentos de project, y el nombre del documento de excel sea el mismo del título del proyecto

Respuesta

Pruebe con este código

Sub ExportarTareasAExcel()
    Dim appExcel As Object
    Dim wbExcel As Object
    Dim wsExcel As Object
    Dim t As Task
    Dim i As Integer
    Dim NombreArchivo As String
    Dim NombreProyecto As String
    ' Crea una instancia de Excel
    Set appExcel = CreateObject("Excel.Application")
    appExcel.Visible = True  ' Cambiar a False si no quieres ver Excel durante la ejecución
    ' Crea un nuevo libro de trabajo
    Set wbExcel = appExcel.Workbooks.Add
    Set wsExcel = wbExcel.Worksheets(1)
    ' Obtén el nombre del proyecto
    NombreProyecto = ActiveProject.Name
    ' Configura las columnas en Excel
    With wsExcel
        .Cells(1, 1).Value = "ID"
        .Cells(1, 2).Value = "Nombre de Tarea"
        .Cells(1, 3).Value = "Duración"
        .Cells(1, 4).Value = "Inicio"
        .Cells(1, 5).Value = "Fin"
        .Cells(1, 6).Value = "Asignado a"
    End With
    ' Llena las filas con datos de las tareas
    i = 2
    For Each t In ActiveProject.Tasks
        If Not t Is Nothing Then
            wsExcel.Cells(i, 1).Value = t.ID
            wsExcel.Cells(i, 2).Value = t.Name
            wsExcel.Cells(i, 3).Value = t.Duration
            wsExcel.Cells(i, 4).Value = t.Start
            wsExcel.Cells(i, 5).Value = t.Finish
            wsExcel.Cells(i, 6).Value = Join(t.Assignments, ", ") ' Unir los nombres de recursos asignados
            i = i + 1
        End If
    Next t
    ' Guardar el archivo de Excel con el nombre del proyecto
    NombreArchivo = Application.ActiveProject.Name
    If Right(NombreArchivo, 4) <> ".xlsx" Then
        NombreArchivo = NombreArchivo & ".xlsx"
    End If
    WbExcel. SaveAs Application.GetSaveAsFilename(NombreArchivo, "Excel Files (*.xlsx), *.xlsx")
    ' Cierra Excel
    wbExcel.Close SaveChanges:=False
    appExcel.Quit
    ' Limpia los objetos
    Set wsExcel = Nothing
    Set wbExcel = Nothing
    Set appExcel = Nothing
    MsgBox "Exportación completada. Archivo guardado como " & NombreArchivo
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas