Guardar archivo creando una carpeta en un directorio con el nombre de la celda A1 y dar nombre al archivo con celda B1
Quiero guardar archivo creando una carpeta en un directorio con el nombre de la celda A1 y dar nombre al archivo con celda B1 seria esto posible
1 Respuesta
 
                [Ho la y bienvenido a todoexpertos!
Puedes poner ejemplos, algo como esto:
- Tienes un directorio: "C:\trabajo\"
En ese directorio quieres crear la carpeta que está en la celda A1
- En la celda A1 tienes el dato "componentes"
- En la celda B1 tienes el dato "alternador"
- Cuál archivo vas a guardar, la hoja activa, el libro activo, una copia del libro con la macro, puede ser más específico.
Suponiendo lo anterior y que vas a guardar una copia del archivo que contiene la macro:
Sub GuardarArchivo()
  'Por Dante Amor
  Dim sPath As String, sFold As String, sFile
  '
  sPath = "C:\trabajo\"   'ajusta al nombre de tu directorio
  sFold = Range("A1").Value
  sFile = Range("B1").Value
  '
  If Dir(sPath, vbDirectory) = "" Then
    MsgBox "No existe el directorio"
    Exit Sub
  End If
  '
  If Dir(sPath & sFold, vbDirectory) = "" Then
    MkDir (sPath & sFold)
  End If
  '
  ThisWorkbook.SaveCopyAs sPath & sFold & "\" & sFile & ".xlsm"
  MsgBox "Archivo guardado"
End Sub[Al final hay un botón para valorar (es como un like a mi respuesta)
[Si tienes dudas puedes comentar o explica con más detalle qué necesitas y actualizo la macro.
 
                Tengo un Libro en directorio: "C:\preparacion\"con las macros el cual abre un archivo en un directorio: "C:\trabajo\" despues tengo varias macros que realizan distintas funciones en el archivo abierto y para guardar el archivo despues de ser tratado que lo guarde con los datos introducidos en las celdas dentro del archivo con las macros o que dicha macro al ser llamada al final de los procesos anteriores pida por el nombre de carpeta a crear y pida por el nombre a dar al archivo a guardar, espero me entiendas con estas indicaciones.
- En la celda A1 el dato para dar "NombreCarpeta"
- En la celda B1 el dato para dar "NombreArchivo"
Tengo mucho que agradecer ya que con vosotros aprendo mucho :) y Dante Amor eres un Maquina del tema. Saludos Juan Perez desde Nürnberg Alemania
 
                Pon aquí la macro con la que abres el libro.
Tienes un archivo con macros, en ese archivo tienes una hoja con estos datos:
- En la celda A1 el dato para dar "NombreCarpeta"
- En la celda B1 el dato para dar "NombreArchivo"
¿Cómo se llama esa hoja?
 
                Este es el nombre del libro de macros JuanPerez_Excel_Macros se que es un desastre y un rompecabezas muy grande que me gustaría hacerlo funcionar con menos parches y menos código estas son las macros.
Sub Eliminar_Filas()
'Por.Dante Amor
 'Workbooks.Open Filename:= _
 "W:\OTTO\02_Kleine Geräte\Klein Geräte Liste Prototype.xlsx"
 Workbooks.Open Filename:= _
 "F:\NeuerKunde\Klein Geräte Liste Prototype.xlsx"
 Sheets("Unter 100€ (Sortierte Ware)").Select 'nombre de la hoja con la información
 'ActiveSheet.ShowAllData
 If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
 col = "H" 'columna para aplicar la condición
 'texto de la condición
 'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
 'Para un número: "123"
 texto = "0"
 '
 valor = texto
 If IsNumeric(texto) Then valor = Val(texto)
 If IsDate(texto) Then valor = CDate(texto)
 '
 'Application.ScreenUpdating = True
 Application.ScreenUpdating = False
 For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
 If LCase(Cells(i, "H")) = LCase(valor) Then
 Rows(i).Delete
 Range("F:F,L:L").Select
 'Range("L1").Activate
 Selection.Delete Shift:=xlToLeft
 Range("A3").Select
 End If
 Next
 Sheets("Sortierte Ware").Select
 'ActiveSheet.ShowAllData
 If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
 col = "H" 'columna para aplicar la condición
 'texto de la condición
 'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
 'Para un número: "123"
 texto = "0"
 '
 valor = texto
 If IsNumeric(texto) Then valor = Val(texto)
 If IsDate(texto) Then valor = CDate(texto)
 '
 'Application.ScreenUpdating = False
 For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
 If LCase(Cells(i, "H")) = LCase(valor) Then
 Rows(i).Delete
 Range("F:F,L:L").Select
 Range("L1").Activate
 Selection.Delete Shift:=xlToLeft
 End If
 Next
 Sheets("Unsortiert").Select
 'ActiveSheet.ShowAllData
 If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
 col = "H" 'columna para aplicar la condición
 'texto de la condición
 'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
 'Para un número: "123"
 texto = "0"
 '
 valor = texto
 If IsNumeric(texto) Then valor = Val(texto)
 If IsDate(texto) Then valor = CDate(texto)
 '
 'Application.ScreenUpdating = False
 For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
 If LCase(Cells(i, "H")) = LCase(valor) Then
 Rows(i).Delete
 End If
 Next
 Sheets("Sortierte Ware").Select
 'ActiveSheet.ShowAllData
 If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
 col = "H" 'columna para aplicar la condición
 'texto de la condición
 'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
 'Para un número: "123"
 texto = "0"
 '
 valor = texto
 If IsNumeric(texto) Then valor = Val(texto)
 If IsDate(texto) Then valor = CDate(texto)
 '
 'Application.ScreenUpdating = False
 For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
 If LCase(Cells(i, "H")) = LCase(valor) Then
 Rows(i).Delete
 End If
 Next
 Sheets("Unsortiert").Select
 'ActiveSheet.ShowAllData
 If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
 Columns("F:F").Select 'columna para aplicar borrado de formulas
 Application.CutCopyMode = False
 Selection.Copy
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 col = "F" 'columna para aplicar la condición
 'texto de la condición
 'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
 'Para un número: "123"
 texto = "verkauft"
 '
 valor = texto
 If IsNumeric(texto) Then valor = Val(texto)
 If IsDate(texto) Then valor = CDate(texto)
 '
 'Application.ScreenUpdating = False
 For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
 If LCase(Cells(i, "F")) = LCase(valor) Then
 Rows(i).Delete
 ActiveWindow.ScrollRow = 3 'volver al pricipio
 Range("F1").Select
 End If
 Next
 Sheets("Personal Verkauf").Select
 'ActiveSheet.ShowAllData
 If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
 Columns("F:F").Select 'columna para aplicar borrado de formulas
 Application.CutCopyMode = False
 Selection.Copy
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 col = "F" 'columna para aplicar la condición
 'texto de la condición
 'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
 'Para un número: "123"
 texto = "verkauft"
 '
 valor = texto
 If IsNumeric(texto) Then valor = Val(texto)
 If IsDate(texto) Then valor = CDate(texto)
 '
 'Application.ScreenUpdating = False
 For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
 If LCase(Cells(i, "F")) = LCase(valor) Then
 Rows(i).Delete
 ActiveWindow.ScrollRow = 3 'volver al pricipio
 Range("F1").Select
 End If
 Next
 Call eliminarcolumnas 'llamar macro para eliminar columna
 Call eliminarcolumnas2
 Call EliminarColumnas3
 Call GuardarArchivo
 'Windows("Klein Geräte Liste Prototype.xlsx").Activate
 'ActiveWorkbook.SaveAs Filename:= _
 "W:\OTTO\02_Kleine Geräte\Angebot für Kunde\Klein Geräte Liste Prototype_ElvinciGmbH.xlsx" _
 , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
 'ChDir "C:\Users\j.perez\Desktop\KUNDEN ANGEBOT\NeuerKunde"
 'ActiveWorkbook.SaveAs Filename:= _
 "C:\Users\j.perez\Desktop\KUNDEN ANGEBOT\NeuerKunde\Klein Geräte Liste Ejemplo.xlsx" _
 , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
 'Windows("JuanPerez_Excel_Macros.xlsm").Activate
 'ActiveWindow.Close
 'Range("I4").Select
 'Application.ScreenUpdating = True
 MsgBox "Zeilen gelöscht und Datei im Ordner gespeichert W:\OTTO\02_Kleine Geräte\Angebot für Kunde\Klein Geräte Liste Prototype_ElvinciGmbH.xlsx ", vbInformation, "Juan Perez"
End Sub
Sub eliminarcolumnas()
'
' eliminarcolumnas Macro
' eliminarcolumnas
'Call eliminarcolumnas
' Acceso directo: CTRL+h
'
 Sheets("Unter 100€ (Sortierte Ware)").Select
 'ActiveSheet.ShowAllData
 If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
 Columns("G:G").Select 'columna para aplicar borrado de formulas
 Application.CutCopyMode = False
 Selection.Copy
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 col = "G" 'columna para aplicar la condición
 'texto de la condición
 'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
 'Para un número: "123"
 texto = "0"
 '
 valor = texto
 If IsNumeric(texto) Then valor = Val(texto)
 If IsDate(texto) Then valor = CDate(texto)
 '
 Application.ScreenUpdating = False
 For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
 If LCase(Cells(i, "G")) = LCase(valor) Then
 Rows(i).Delete
 ActiveWindow.ScrollRow = 3 'volver al pricipio
 Range("G1").Select
 End If
 Next
End Sub
Sub eliminarcolumnas2()
'
' eliminarcolumnas Macro
' eliminarcolumnas
'Call eliminarcolumnas2
' Acceso directo: CTRL+j
'
 Sheets("Sortierte Ware").Select
 'ActiveSheet.ShowAllData
 If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
 Columns("G:G").Select 'columna para aplicar borrado de formulas
 Application.CutCopyMode = False
 Selection.Copy
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 col = "G" 'columna para aplicar la condición
 'texto de la condición
 'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
 'Para un número: "123"
 texto = "0"
 '
 valor = texto
 If IsNumeric(texto) Then valor = Val(texto)
 If IsDate(texto) Then valor = CDate(texto)
 '
 Application.ScreenUpdating = False
 For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
 If LCase(Cells(i, "G")) = LCase(valor) Then
 Rows(i).Delete
 ActiveWindow.ScrollRow = 3 'volver al pricipio
 Range("G1").Select
 End If
 Next
End Sub
Sub EliminarColumnas3()
'
' EliminarColumnas3 Macro
' EliminarColumnas3
'
'
 Sheets("Dyson").Select
 Range("H:H").Select
 Selection.Delete Shift:=xlToLeft
 Range("H1").Select
 Sheets("Personal Verkauf").Select
 Range("I:I,K:K,N:N,O:O").Select
 Selection.Delete Shift:=xlToLeft
 Range("O1").Select
 Sheets("Unsortiert").Select
 Range("I:I,K:K,L:L,N:N,O:O").Select
 Selection.Delete Shift:=xlToLeft
 Range("O1").Select
 Sheets("Unter 100€ (Sortierte Ware)").Select
End Sub
Sub GuardarArchivo()
  'Por Dante Amor
  Dim sPath As String, sFold As String, sFile
  '
  sPath = "C:\trabajo\"   'ajusta al nombre de tu directorio
  sFold = Range("A1").Value
  sFile = Range("B1").Value
  '
  If Dir(sPath, vbDirectory) = "" Then
    MsgBox "No existe el directorio"
    Exit Sub
  End If
  '
  If Dir(sPath & sFold, vbDirectory) = "" Then
    MkDir (sPath & sFold)
  End If
  '
  ThisWorkbook.SaveCopyAs sPath & sFold & "\" & sFile & ".xlsm"
  MsgBox "Archivo guardado"
End Sub
                     
                En lo sucesivo, cuando pongas una macro aquí en el foro debes utilizar el icono para insertar código. En la siguiente imagen te muestro en dónde está el icono para que lo utilices.

Observa la diferencia:
Sin icono:
Sub GuardarArchivo()
 'Por Dante Amor
 Dim sPath As String, sFold As String, sFile
sPath = "C:\trabajo\" 'ajusta al nombre de tu directorio
 sFold = Range("A1").Value
 sFile = Range("B1").Value
End Sub
Con icono:
Sub GuardarArchivo()
  'Por Dante Amor
  Dim sPath As String, sFold As String, sFile
  '
  sPath = "C:\trabajo\"   'ajusta al nombre de tu directorio
  sFold = Range("A1").Value
  sFile = Range("B1").Value
End SubTienes varias macros.
¿Cómo se llama la macro que abre el archivo?
No contestaste esta duda:
Tienes un archivo con macros, en ese archivo tienes una hoja con estos datos:
- En la celda A1 el dato para dar "NombreCarpeta"
- En la celda B1 el dato para dar "NombreArchivo"
¿Cómo se llama esa hoja?
 
                Sub Eliminar_Filas()
'Por.Dante Amor
     'Workbooks.Open Filename:= _
        "W:\OTTO\02_Kleine Geräte\Klein Geräte Liste Prototype.xlsx"
    Workbooks.Open Filename:= _
        "F:\NeuerKunde\Klein Geräte Liste Prototype.xlsx"
    Sheets("Unter 100€ (Sortierte Ware)").Select 'nombre de la hoja con la información
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    col = "H"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = True
    Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "H")) = LCase(valor) Then
            Rows(i).Delete
            Range("F:F,L:L").Select
    'Range("L1").Activate
    Selection.Delete Shift:=xlToLeft
    Range("A3").Select
        End If
    Next
    Sheets("Sortierte Ware").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    col = "H"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "H")) = LCase(valor) Then
            Rows(i).Delete
            Range("F:F,L:L").Select
    Range("L1").Activate
    Selection.Delete Shift:=xlToLeft
        End If
    Next
    Sheets("Unsortiert").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    col = "H"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "H")) = LCase(valor) Then
            Rows(i).Delete
        End If
    Next
    Sheets("Sortierte Ware").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    col = "H"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "H")) = LCase(valor) Then
            Rows(i).Delete
        End If
    Next
    Sheets("Unsortiert").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    Columns("F:F").Select 'columna para aplicar borrado de formulas
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    col = "F"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "verkauft"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "F")) = LCase(valor) Then
            Rows(i).Delete
            ActiveWindow.ScrollRow = 3 'volver al pricipio
            Range("F1").Select
        End If
    Next
    Sheets("Personal Verkauf").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    Columns("F:F").Select 'columna para aplicar borrado de formulas
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    col = "F"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "verkauft"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "F")) = LCase(valor) Then
            Rows(i).Delete
            ActiveWindow.ScrollRow = 3 'volver al pricipio
            Range("F1").Select
        End If
    Next
    Call eliminarcolumnas 'llamar macro para eliminar columna
    Call eliminarcolumnas2
    Call EliminarColumnas3
    Call GuardarArchivo
    'Windows("Klein Geräte Liste Prototype.xlsx").Activate
    'ActiveWorkbook.SaveAs Filename:= _
        "W:\OTTO\02_Kleine Geräte\Angebot für Kunde\Klein Geräte Liste Prototype_ElvinciGmbH.xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    'ChDir "C:\Users\j.perez\Desktop\KUNDEN ANGEBOT\NeuerKunde"
    'ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\j.perez\Desktop\KUNDEN ANGEBOT\NeuerKunde\Klein Geräte Liste Ejemplo.xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    'Windows("JuanPerez_Excel_Macros.xlsm").Activate
    'ActiveWindow.Close
    'Range("I4").Select
    'Application.ScreenUpdating = True
    MsgBox "Zeilen gelöscht und Datei im Ordner gespeichert W:\OTTO\02_Kleine Geräte\Angebot für Kunde\Klein Geräte Liste Prototype_ElvinciGmbH.xlsx ", vbInformation, "Juan Perez"
End Sub
Sub eliminarcolumnas()
'
' eliminarcolumnas Macro
' eliminarcolumnas
'Call eliminarcolumnas
' Acceso directo: CTRL+h
'
     Sheets("Unter 100€ (Sortierte Ware)").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    Columns("G:G").Select 'columna para aplicar borrado de formulas
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    col = "G"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "G")) = LCase(valor) Then
            Rows(i).Delete
            ActiveWindow.ScrollRow = 3 'volver al pricipio
            Range("G1").Select
        End If
    Next
End Sub
Sub eliminarcolumnas2()
'
' eliminarcolumnas Macro
' eliminarcolumnas
'Call eliminarcolumnas2
' Acceso directo: CTRL+j
'
     Sheets("Sortierte Ware").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    Columns("G:G").Select 'columna para aplicar borrado de formulas
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    col = "G"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "G")) = LCase(valor) Then
            Rows(i).Delete
            ActiveWindow.ScrollRow = 3 'volver al pricipio
            Range("G1").Select
        End If
    Next
End Sub
Sub EliminarColumnas3()
'
' EliminarColumnas3 Macro
' EliminarColumnas3
'
'
    Sheets("Dyson").Select
    Range("H:H").Select
    Selection.Delete Shift:=xlToLeft
    Range("H1").Select
    Sheets("Personal Verkauf").Select
    Range("I:I,K:K,N:N,O:O").Select
    Selection.Delete Shift:=xlToLeft
    Range("O1").Select
    Sheets("Unsortiert").Select
    Range("I:I,K:K,L:L,N:N,O:O").Select
    Selection.Delete Shift:=xlToLeft
    Range("O1").Select
    Sheets("Unter 100€ (Sortierte Ware)").Select
End Sub
Sub GuardarArchivo()
  'Por Dante Amor W:\OTTO\02_Kleine Geräte\Angebot für Kunde\
  Dim sPath As String, sFold As String, sFile
  '
  sPath = "F:\NeuerKunde"   'ajusta al nombre de tu directorio
  sFold = Range("A1").Value
  sFile = Range("B1").Value
  '
  If Dir(sPath, vbDirectory) = "" Then
    MsgBox "No existe el directorio"
    Exit Sub
  End If
  '
  If Dir(sPath & sFold, vbDirectory) = "" Then
    MkDir (sPath & sFold)
  End If
  '
  'ThisWorkbook.SaveCopyAs sPath & sFold & "\" & sFile & ".xlsm"
  ActiveWorkbook.SaveCopyAs sPath & sFold & "\" & sFile & ".xlsm"
  MsgBox "Archivo guardado"
End Sub
estas son las macros que necesito poder corregir o agrupar y que funcione
 
                En la macro "Eliminar_Filas", después de estas líneas:
'**************** 'Guardar Archivo '****************
Agregué el código para guardar la macro:
Sub Eliminar_Filas()
'Por.Dante Amor
     'Workbooks.Open Filename:= _
        "W:\OTTO\02_Kleine Geräte\Klein Geräte Liste Prototype.xlsx"
    Workbooks.Open Filename:= _
        "F:\NeuerKunde\Klein Geräte Liste Prototype.xlsx"
    Sheets("Unter 100€ (Sortierte Ware)").Select 'nombre de la hoja con la información
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    col = "H"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = True
    Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "H")) = LCase(valor) Then
            Rows(i).Delete
            Range("F:F,L:L").Select
    'Range("L1").Activate
    Selection.Delete Shift:=xlToLeft
    Range("A3").Select
        End If
    Next
    Sheets("Sortierte Ware").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    col = "H"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "H")) = LCase(valor) Then
            Rows(i).Delete
            Range("F:F,L:L").Select
    Range("L1").Activate
    Selection.Delete Shift:=xlToLeft
        End If
    Next
    Sheets("Unsortiert").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    col = "H"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "H")) = LCase(valor) Then
            Rows(i).Delete
        End If
    Next
    Sheets("Sortierte Ware").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    col = "H"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "H")) = LCase(valor) Then
            Rows(i).Delete
        End If
    Next
    Sheets("Unsortiert").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    Columns("F:F").Select 'columna para aplicar borrado de formulas
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    col = "F"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "verkauft"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "F")) = LCase(valor) Then
            Rows(i).Delete
            ActiveWindow.ScrollRow = 3 'volver al pricipio
            Range("F1").Select
        End If
    Next
    Sheets("Personal Verkauf").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    Columns("F:F").Select 'columna para aplicar borrado de formulas
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    col = "F"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "verkauft"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    'Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "F")) = LCase(valor) Then
            Rows(i).Delete
            ActiveWindow.ScrollRow = 3 'volver al pricipio
            Range("F1").Select
        End If
    Next
    Call eliminarcolumnas 'llamar macro para eliminar columna
    Call eliminarcolumnas2
    Call EliminarColumnas3
    '****************
    'Guardar Archivo
    '****************
    '
    Dim sPath As String, sFold As String, sFile
    '
    sPath = "F:\NeuerKunde\"   'ajusta al nombre de tu directorio
    sFold = Sheets("Tabelle1").Range("A1").Value
    sFile = Sheets("Tabelle1").Range("B1").Value
    '
    If Dir(sPath, vbDirectory) = "" Then
      MsgBox "No existe el directorio " & sPath
      Exit Sub
    End If
    '
    If Dir(sPath & sFold, vbDirectory) = "" Then
      MkDir (sPath & sFold)
    End If
    '
    Windows("Klein Geräte Liste Prototype.xlsx").Activate
    ActiveWorkbook.SaveCopyAs sPath & sFold & "\" & sFile & ".xlsm"
    '
    MsgBox "Zeilen gelöscht und Datei im Ordner gespeichert W:\OTTO\02_Kleine Geräte\Angebot für Kunde\Klein Geräte Liste Prototype_ElvinciGmbH.xlsx ", vbInformation, "Juan Perez"
End Sub
'
Sub eliminarcolumnas()
'
' eliminarcolumnas Macro
' eliminarcolumnas
'Call eliminarcolumnas
' Acceso directo: CTRL+h
'
     Sheets("Unter 100€ (Sortierte Ware)").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    Columns("G:G").Select 'columna para aplicar borrado de formulas
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    col = "G"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "G")) = LCase(valor) Then
            Rows(i).Delete
            ActiveWindow.ScrollRow = 3 'volver al pricipio
            Range("G1").Select
        End If
    Next
End Sub
Sub eliminarcolumnas2()
'
' eliminarcolumnas Macro
' eliminarcolumnas
'Call eliminarcolumnas2
' Acceso directo: CTRL+j
'
     Sheets("Sortierte Ware").Select
    'ActiveSheet.ShowAllData
     If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    Columns("G:G").Select 'columna para aplicar borrado de formulas
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    col = "G"                   'columna para aplicar la condición
    'texto de la condición
        'Para una fecha: "10/07/2017" el formato debe ser dd/mm/aaaa
        'Para un número: "123"
    texto = "0"
    '
    valor = texto
    If IsNumeric(texto) Then valor = Val(texto)
    If IsDate(texto) Then valor = CDate(texto)
    '
    Application.ScreenUpdating = False
    For i = Range(col & Rows.Count).End(xlUp).Row To 1 Step -1
        If LCase(Cells(i, "G")) = LCase(valor) Then
            Rows(i).Delete
            ActiveWindow.ScrollRow = 3 'volver al pricipio
            Range("G1").Select
        End If
    Next
End Sub
Sub EliminarColumnas3()
'
' EliminarColumnas3 Macro
' EliminarColumnas3
'
'
    Sheets("Dyson").Select
    Range("H:H").Select
    Selection.Delete Shift:=xlToLeft
    Range("H1").Select
    Sheets("Personal Verkauf").Select
    Range("I:I,K:K,N:N,O:O").Select
    Selection.Delete Shift:=xlToLeft
    Range("O1").Select
    Sheets("Unsortiert").Select
    Range("I:I,K:K,L:L,N:N,O:O").Select
    Selection.Delete Shift:=xlToLeft
    Range("O1").Select
    Sheets("Unter 100€ (Sortierte Ware)").Select
End Sub
                     
                
Eres el mejor y lo digo de corazón por que te mereces el reconocimiento por tu rapidez y el buen hacer estoy impresionado. Siento las faltas de ortografía estoy con teclado Alemán
- Compartir respuesta
 
        
