cambio de , por .
Publicado por Reyes Pérez (3 intervenciones) el 28/03/2023 10:40:09
Buenos días, he realizado una macro para una limpieza de unos archivos, pero al ejecutarla me hace un cambio bastante extraño, me cambia los puntos de miles por , y los coge como numero decimal. Por ejemplo, si antes ene l xls tenia un 1.000, cuando ejecuto la macro se convierte en un 1.
La macro sería la siguiente:
Sub Macro_contratos_1B()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do While xFileName <> ""
With Workbooks.Open(xFdItem & xFileName)
Range("A:E").Columns.Delete
Dim Fila As Long
For Fila = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If WorksheetFunction.CountA(ActiveSheet.Rows(Fila)) = 0 Then
Cells(Fila, 1).EntireRow.Delete
End If
Next Fila
Range("A1").Select
If AutoFilter = OFF Then Selection.AutoFilter
ActiveSheet.Range("$A$1:$CG$124286").AutoFilter Field:=1, Criteria1:="< 100000", Operator:=xlFilterValues
ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Range("A1").Select
If AutoFilter = OFF Then Selection.AutoFilter
ActiveSheet.Range("$A$1:$CG$124286").AutoFilter Field:=1, Criteria1:="=", Operator:=xlFilterValues
ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Range("A1").Select
If AutoFilter = OFF Then Selection.AutoFilter
ActiveSheet.Range("$A$1:$CG$124286").AutoFilter Field:=1, Criteria1:="C-Nº contr", Operator:=xlFilterValues
ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Range("A1").Select
If AutoFilter = OFF Then Selection.AutoFilter
ActiveSheet.Range("$A$1:$CG$124286").AutoFilter Field:=1, Criteria1:="SI", Operator:=xlFilterValues
ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Set MR = Range("A1:BE1")
For Each cell In MR
If cell.Value = Empty Then cell.EntireColumn.ClearContents
Next
Dim n As Integer 'nº columnas
Dim i As Integer
Dim col As String
n = ActiveSheet.UsedRange.Columns.Count
For i = n To 1 Step -1
If WorksheetFunction.CountA(Cells(1, i).EntireColumn) = Empty Then
Cells(1, i).EntireColumn.Delete
End If
Next i
ActiveSheet.Range("T1:T" & Range("T" & Rows.Count).End(xlUp).Row).Replace ",", "."
ActiveSheet.Range("Y1:Y" & Range("Y" & Rows.Count).End(xlUp).Row).Replace ",", "."
RutaArchivo = "C:\Users\u15285\Desktop\CONTRATOS\Archivos excel\"
NombreArchivo = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
ActiveWorkbook.SaveAs Filename:=RutaArchivo & NombreArchivo & ".xlsx", FileFormat:=51
Selection.AutoFilter
Range("A1").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$BE$" & Range("K" & Rows.Count).End(xlUp).Row), , xlYes). _
Name = "Tabla3"
Range("Tabla3[#All]").Select
Columns("H:H").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("H2").Select
ActiveCell.FormulaR1C1 = _
"=DATE(MID(RC[-1],7,4),MID(RC[-1],4,2),MID(RC[-1],1,2))"
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H" & Range("G" & Rows.Count).End(xlUp).Row)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("H2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("G1").Select
Application.CutCopyMode = False
Selection.Copy
Range("H1").Select
ActiveSheet.Paste
Columns("G:G").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("I:I").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("I2").Select
ActiveCell.FormulaR1C1 = _
"=DATE(MID(RC[-1],7,4),MID(RC[-1],4,2),MID(RC[-1],1,2))"
Range("I2").Select
Selection.AutoFill Destination:=Range("I2:I" & Range("H" & Rows.Count).End(xlUp).Row)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("I2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H1").Select
Application.CutCopyMode = False
Selection.Copy
Range("I1").Select
ActiveSheet.Paste
Columns("H:H").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("D:D").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D2").Select
ActiveCell.FormulaR1C1 = _
"=DATE(MID(RC[-1],7,4),MID(RC[-1],4,2),MID(RC[-1],1,2))"
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D" & Range("C" & Rows.Count).End(xlUp).Row)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C1").Select
Application.CutCopyMode = False
Selection.Copy
Range("D1").Select
ActiveSheet.Paste
Columns("C:C").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Dim columnaAEliminar As Range
Set columnaAEliminar = ActiveSheet.Rows(1).Find("Columna1", LookIn:=xlValues, LookAt:=xlWhole)
If Not columnaAEliminar Is Nothing Then
columnaAEliminar.EntireColumn.Delete
End If
Dim columnaAEliminar2 As Range
Set columnaAEliminar2 = ActiveSheet.Rows(1).Find("Columna2", LookIn:=xlValues, LookAt:=xlWhole)
If Not columnaAEliminar2 Is Nothing Then
columnaAEliminar2.EntireColumn.Delete
End If
Dim columnaAEliminar3 As Range
Set columnaAEliminar3 = ActiveSheet.Rows(1).Find("Columna3", LookIn:=xlValues, LookAt:=xlWhole)
If Not columnaAEliminar3 Is Nothing Then
columnaAEliminar3.EntireColumn.Delete
End If
Dim columnaAEliminar4 As Range
Set columnaAEliminar4 = ActiveSheet.Rows(1).Find("Columna4", LookIn:=xlValues, LookAt:=xlWhole)
If Not columnaAEliminar4 Is Nothing Then
columnaAEliminar4.EntireColumn.Delete
End If
Dim columnaAEliminar5 As Range
Set columnaAEliminar5 = ActiveSheet.Rows(1).Find("Columna5", LookIn:=xlValues, LookAt:=xlWhole)
If Not columnaAEliminar5 Is Nothing Then
columnaAEliminar5.EntireColumn.Delete
End If
Columns("AH:AH").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("AH2").Select
ActiveCell.FormulaR1C1 = _
"=DATE(MID(RC[-1],7,4),MID(RC[-1],4,2),MID(RC[-1],1,2))"
Range("AH2").Select
Selection.AutoFill Destination:=Range("AH2:AH" & Range("AG" & Rows.Count).End(xlUp).Row)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("AH2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AG1").Select
Application.CutCopyMode = False
Selection.Copy
Range("AH1").Select
ActiveSheet.Paste
Columns("AG:AG").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("AI:AI").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("AI2").Select
ActiveCell.FormulaR1C1 = _
"=DATE(MID(RC[-1],7,4),MID(RC[-1],4,2),MID(RC[-1],1,2))"
Range("AI2").Select
Selection.AutoFill Destination:=Range("AI2:AI" & Range("AH" & Rows.Count).End(xlUp).Row)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("AI2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AH1").Select
Application.CutCopyMode = False
Selection.Copy
Range("AI1").Select
ActiveSheet.Paste
Columns("AH:AH").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
ActiveWorkbook.Close SaveChanges:=True
End With
xFileName = Dir
Loop
End If
End Sub
ojala pudieran ayudarme porque no entiendo a que se debe ese cambio ya que me vuelve locas esas columnas.
Muchas gracias
La macro sería la siguiente:
Sub Macro_contratos_1B()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do While xFileName <> ""
With Workbooks.Open(xFdItem & xFileName)
Range("A:E").Columns.Delete
Dim Fila As Long
For Fila = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If WorksheetFunction.CountA(ActiveSheet.Rows(Fila)) = 0 Then
Cells(Fila, 1).EntireRow.Delete
End If
Next Fila
Range("A1").Select
If AutoFilter = OFF Then Selection.AutoFilter
ActiveSheet.Range("$A$1:$CG$124286").AutoFilter Field:=1, Criteria1:="< 100000", Operator:=xlFilterValues
ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Range("A1").Select
If AutoFilter = OFF Then Selection.AutoFilter
ActiveSheet.Range("$A$1:$CG$124286").AutoFilter Field:=1, Criteria1:="=", Operator:=xlFilterValues
ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Range("A1").Select
If AutoFilter = OFF Then Selection.AutoFilter
ActiveSheet.Range("$A$1:$CG$124286").AutoFilter Field:=1, Criteria1:="C-Nº contr", Operator:=xlFilterValues
ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Range("A1").Select
If AutoFilter = OFF Then Selection.AutoFilter
ActiveSheet.Range("$A$1:$CG$124286").AutoFilter Field:=1, Criteria1:="SI", Operator:=xlFilterValues
ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Set MR = Range("A1:BE1")
For Each cell In MR
If cell.Value = Empty Then cell.EntireColumn.ClearContents
Next
Dim n As Integer 'nº columnas
Dim i As Integer
Dim col As String
n = ActiveSheet.UsedRange.Columns.Count
For i = n To 1 Step -1
If WorksheetFunction.CountA(Cells(1, i).EntireColumn) = Empty Then
Cells(1, i).EntireColumn.Delete
End If
Next i
ActiveSheet.Range("T1:T" & Range("T" & Rows.Count).End(xlUp).Row).Replace ",", "."
ActiveSheet.Range("Y1:Y" & Range("Y" & Rows.Count).End(xlUp).Row).Replace ",", "."
RutaArchivo = "C:\Users\u15285\Desktop\CONTRATOS\Archivos excel\"
NombreArchivo = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
ActiveWorkbook.SaveAs Filename:=RutaArchivo & NombreArchivo & ".xlsx", FileFormat:=51
Selection.AutoFilter
Range("A1").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$BE$" & Range("K" & Rows.Count).End(xlUp).Row), , xlYes). _
Name = "Tabla3"
Range("Tabla3[#All]").Select
Columns("H:H").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("H2").Select
ActiveCell.FormulaR1C1 = _
"=DATE(MID(RC[-1],7,4),MID(RC[-1],4,2),MID(RC[-1],1,2))"
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H" & Range("G" & Rows.Count).End(xlUp).Row)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("H2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("G1").Select
Application.CutCopyMode = False
Selection.Copy
Range("H1").Select
ActiveSheet.Paste
Columns("G:G").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("I:I").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("I2").Select
ActiveCell.FormulaR1C1 = _
"=DATE(MID(RC[-1],7,4),MID(RC[-1],4,2),MID(RC[-1],1,2))"
Range("I2").Select
Selection.AutoFill Destination:=Range("I2:I" & Range("H" & Rows.Count).End(xlUp).Row)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("I2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H1").Select
Application.CutCopyMode = False
Selection.Copy
Range("I1").Select
ActiveSheet.Paste
Columns("H:H").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("D:D").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D2").Select
ActiveCell.FormulaR1C1 = _
"=DATE(MID(RC[-1],7,4),MID(RC[-1],4,2),MID(RC[-1],1,2))"
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D" & Range("C" & Rows.Count).End(xlUp).Row)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C1").Select
Application.CutCopyMode = False
Selection.Copy
Range("D1").Select
ActiveSheet.Paste
Columns("C:C").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Dim columnaAEliminar As Range
Set columnaAEliminar = ActiveSheet.Rows(1).Find("Columna1", LookIn:=xlValues, LookAt:=xlWhole)
If Not columnaAEliminar Is Nothing Then
columnaAEliminar.EntireColumn.Delete
End If
Dim columnaAEliminar2 As Range
Set columnaAEliminar2 = ActiveSheet.Rows(1).Find("Columna2", LookIn:=xlValues, LookAt:=xlWhole)
If Not columnaAEliminar2 Is Nothing Then
columnaAEliminar2.EntireColumn.Delete
End If
Dim columnaAEliminar3 As Range
Set columnaAEliminar3 = ActiveSheet.Rows(1).Find("Columna3", LookIn:=xlValues, LookAt:=xlWhole)
If Not columnaAEliminar3 Is Nothing Then
columnaAEliminar3.EntireColumn.Delete
End If
Dim columnaAEliminar4 As Range
Set columnaAEliminar4 = ActiveSheet.Rows(1).Find("Columna4", LookIn:=xlValues, LookAt:=xlWhole)
If Not columnaAEliminar4 Is Nothing Then
columnaAEliminar4.EntireColumn.Delete
End If
Dim columnaAEliminar5 As Range
Set columnaAEliminar5 = ActiveSheet.Rows(1).Find("Columna5", LookIn:=xlValues, LookAt:=xlWhole)
If Not columnaAEliminar5 Is Nothing Then
columnaAEliminar5.EntireColumn.Delete
End If
Columns("AH:AH").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("AH2").Select
ActiveCell.FormulaR1C1 = _
"=DATE(MID(RC[-1],7,4),MID(RC[-1],4,2),MID(RC[-1],1,2))"
Range("AH2").Select
Selection.AutoFill Destination:=Range("AH2:AH" & Range("AG" & Rows.Count).End(xlUp).Row)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("AH2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AG1").Select
Application.CutCopyMode = False
Selection.Copy
Range("AH1").Select
ActiveSheet.Paste
Columns("AG:AG").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("AI:AI").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("AI2").Select
ActiveCell.FormulaR1C1 = _
"=DATE(MID(RC[-1],7,4),MID(RC[-1],4,2),MID(RC[-1],1,2))"
Range("AI2").Select
Selection.AutoFill Destination:=Range("AI2:AI" & Range("AH" & Rows.Count).End(xlUp).Row)
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("AI2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AH1").Select
Application.CutCopyMode = False
Selection.Copy
Range("AI1").Select
ActiveSheet.Paste
Columns("AH:AH").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
ActiveWorkbook.Close SaveChanges:=True
End With
xFileName = Dir
Loop
End If
End Sub
ojala pudieran ayudarme porque no entiendo a que se debe ese cambio ya que me vuelve locas esas columnas.
Muchas gracias
Valora esta pregunta
0