Hola, he podido crear nuevas hojas de trabajo basadas en valores únicos en una columna. Además de esto, quiero resumir los valores en una columna e incluir esta suma en el nombre de archivo de cada hoja de trabajo correspondiente.
Quiero que la suma de los valores en la columna D se agregue al nombre de archivo de este libro en el formato Filename_Sum(D).xls
Esto es lo que he hecho, todo lo que necesito es hacer la suma de la Columna I2:I, convertir la suma a una Cadena e incluirla en el nombre del archivo (el valor en la columna A)
'Copy/paste the visible data to the new workbook
My_Range.SpecialCells(xlCellTypeVisible).Copy
With WSNew.Range("A1")
' Paste:=8 will copy the columnwidth in Excel 2000 and higher
' Remove this line if you use Excel 97
.PasteSpecial Paste:=8
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
.Select
End With
mySum = Application.WorksheetFunction.Sum(Columns("I2:I1024"))
'Save the file in the new folder and close it
On Error Resume Next
WSNew.Parent.SaveAs foldername & _
cell.Value _
& CStr(mySum) & _
FileExtStr, FileFormatNum'
Respuesta1
Voy a asumir que no sabes nada sobre VBA o macros, así que aquí tienes los pasos más breves para hacer lo que estás buscando:
Abre tu libro de trabajo. En tu teclado, presiona alt + F11. Esto abrirá la pantalla de desarrollador de VBA. A la izquierda hay un árbol, haga clic derecho en el objeto superior (VBAProject(YourFileName)) y seleccione Insertar > Módulo. En el módulo que se abrió, en la pantalla principal pega este código:
Option Explicit
Sub SaveWithSum()
Dim SumOfD As Integer
SumOfD = Application.Sum(Range("Sheet1!D:D"))
ActiveWorkbook.SaveAs "C:\YourFolder\YourFilename" & SumOfD & ".xlsx", FileFormat:=51
End Sub
Luego presiona guardar. Le indicará que su formato de archivo actual (.xlsx) puede ejecutar macros. Seleccione no y guarde su archivo como YourFile.xlsm.
¡Ya terminaste! El archivo resultante será C:\SuCarpeta\SuNombreDeArchivo##.xlsx.
Este script guardará todos los archivos renombrados como archivos .xlsx que NO PUEDEN ejecutar la macro nuevamente (en realidad, desaparecerán de la pantalla del Desarrollador). Si desea guardar los archivos como archivos .xlsm y dejar que el script continúe ejecutándose también en los archivos guardados, cambie ".xslx" a ".xlsm" y cambie FileFormat a 52.
Puede crear un botón en la hoja de trabajo que enlace a la macro (una búsqueda rápida en Google ayudará con eso) o simplemente ejecutar la macro seleccionando Ver>Macros y ejecutarla desde allí.
¡Asegúrate de que Hoja1! se cambia para que coincida con su hoja de trabajo. ¡Toda la suerte!
Respuesta2
Aunque la pregunta se publicó hace unos años, me gustaría brindar una respuesta a otras personas que buscan una solución:
Sub save_with_value()
Dim Fname As String
Dim cell As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'replaces existing file if already exists
Fpath = "O:\TEST\Values\" 'folder path - change accordingly to your folder
Fname = »Filename«
Dim result As Double
result = WorksheetFunction.Sum(Range("D:D"))
ActiveWorkbook.SaveAs Filename:= _
Fpath & "\" & Fname & "_" & Format(result, "#,##0.00") & " EUR" & ".xlsx"
End sub