From b13ac1b06d55c7a05ddb59dab26991b5be74617d Mon Sep 17 00:00:00 2001 From: Miguel Date: Sat, 1 Mar 2025 14:58:11 +0100 Subject: [PATCH] Al exportar a Excel se copian solo los valores y no las formulas --- ExportUtils.vba | 50 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/ExportUtils.vba b/ExportUtils.vba index 5ad6a86..bc805cf 100644 --- a/ExportUtils.vba +++ b/ExportUtils.vba @@ -27,37 +27,58 @@ End Function Public Function ExportToExcel(fechaDesde As String, fechaHasta As String) As Boolean Dim rutaPDF As String Dim nombreArchivo As String + Dim ws As Worksheet + Dim links As Variant + Dim i As Long - ' Construct Excel filename based on dates + ' Construir el nombre del archivo basado en las fechas nombreArchivo = "fdl_" & fechaDesde & " al " & fechaHasta & ".xlsx" - ' Show "Save As" dialog and get the selected path + ' Mostrar el diálogo "Guardar Como" y obtener la ruta seleccionada rutaPDF = Application.GetSaveAsFilename(InitialFileName:=nombreArchivo, _ - FileFilter:="XLS Files (*.xlsx), *.xlsx", Title:="Guardar como XLS") + FileFilter:="XLS Files (*.xlsx), *.xlsx", Title:="Guardar como XLS") - ' Check if user cancelled the dialog + ' Verificar si el usuario canceló el diálogo If (rutaPDF <> "False") And (rutaPDF <> "Falso") Then Dim Hoja1 As Worksheet, Hoja2 As Worksheet, Hoja3 As Worksheet, Hoja4 As Worksheet, Hoja5 As Worksheet Dim NuevoLibro As Workbook - - ' Set references to sheets + + ' Establecer referencias a las hojas originales Set Hoja1 = ThisWorkbook.Sheets(SHEET_NOTA) Set Hoja2 = ThisWorkbook.Sheets(SHEET_FDL_1) Set Hoja3 = ThisWorkbook.Sheets(SHEET_FDL_2) Set Hoja4 = ThisWorkbook.Sheets(SHEET_FDL_3) Set Hoja5 = ThisWorkbook.Sheets(SHEET_FOGLIO_1) - - ' Copy sheets to new workbook + + ' Copiar la primera hoja al nuevo libro Hoja1.Copy Set NuevoLibro = ActiveWorkbook - - ' Copy remaining sheets + + ' Copiar el resto de las hojas al nuevo libro Hoja2.Copy After:=NuevoLibro.Sheets(1) Hoja3.Copy After:=NuevoLibro.Sheets(2) Hoja4.Copy After:=NuevoLibro.Sheets(3) Hoja5.Copy After:=NuevoLibro.Sheets(4) - - ' Save and close + + ' Aplicar .Value = .Value a todas las hojas para convertir fórmulas en valores + For Each ws In NuevoLibro.Worksheets + ws.UsedRange.value = ws.UsedRange.value + Next ws + + ' Obtener los links externos del nuevo libro + links = NuevoLibro.LinkSources(Type:=xlLinkTypeExcelLinks) + + ' Si existen links externos, recorrer todas las hojas y reemplazar el texto del link + ' If Not IsEmpty(links) Then + ' For Each ws In NuevoLibro.Worksheets + ' For i = LBound(links) To UBound(links) + ' ws.Cells.Replace What:=links(i), Replacement:="", LookAt:=xlPart, _ + ' SearchOrder:=xlByRows, MatchCase:=False + ' Next i + ' Next ws + ' End If + + ' Guardar y cerrar el nuevo libro NuevoLibro.SaveAs rutaPDF, FileFormat:=xlWorkbookDefault NuevoLibro.Close SaveChanges:=False @@ -67,6 +88,8 @@ Public Function ExportToExcel(fechaDesde As String, fechaHasta As String) As Boo End If End Function + + Public Function ExportComessaToExcel() As Boolean Dim rutaPDF As String Dim nombreArchivo As String @@ -117,4 +140,5 @@ Public Function ExportComessaToExcel() As Boolean Else ExportComessaToExcel = False End If -End Function \ No newline at end of file +End Function +