Macro guardar en cualquier ubicación,

Cree un botón para hacer una copia de una hoja y guardarla en el directorio en una carpeta especifica (Si no existe la carpeta, la crea) donde se encuentra el archivo pero me marca error en:

ChDir ActiveWorkbook.Path & NombreCarpeta

También trate ponerle así y aun así me marca error

ChDir ActiveWorkbook. Path

ChDir Depositfile

Este es el código del botón:

_________________________________________________________________________________________

Dim Path As String, NombreCarpeta As String
Dim fechaActual As Date
Dim horaActual As Date
Dim Depositfile As String
fechaActual = Date
horaActual = Now

    Path = ThisWorkbook.Path
    fechaActual = Date
    horaActual = Now
    NombreCarpeta = "\Received_Report\"
    'Verificamos si la carpeta existe ya...
    If Dir(ThisWorkbook.Path, vbDirectory) <> "" Then
    'Comprueba que la carpeta no existe para crearla.
    If Dir(ThisWorkbook.Path & NombreCarpeta, vbDirectory) = "" Then MkDir ThisWorkbook.Path & NombreCarpeta
    End If
' Formato de la hoja copiada
 Sheets("Received_Report").Select
    Sheets("Received_Report").Copy
    Range("A1:I1").Select
    Cells.Select
    With Selection
        .HorizontalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("A1").Select
    'formato guardar directorio
 

Depositfile = ActiveWorkbook.Path & NombreCarpeta & "Received Report Warehouse - " & fechaActual & " - " & horaActual
    ChDir ActiveWorkbook.Path & NombreCarpeta
    ActiveWorkbook.SaveAs Filename:=Depositfile, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    MsgBox ActiveWorkbook.FullName, vbOKOnly, "Reporte hecho en la siguiente ruta:"
    ActiveWindow.Close
End Sub

2 Respuestas

Respuesta
2

Quedaría así. Ya lo probé y funciona correctamente.

Te puse un formato para la fecha y la hoja, ya que en los nombres de archivo no están permitidos los caracteres / :

Sub Guardar_Hoja()
    Dim Ruta As String, NombreCarpeta As String
    Dim fechaActual As String
    Dim horaActual As String
    Dim Depositfile As String
    '
    Ruta = ThisWorkbook.Path & "\"
    fechaActual = Format(Date, "dd-mm-yyyy")
    horaActual = Format(Now, "hh-mm-ss")
    NombreCarpeta = "Received_Report\"
    'Comprueba que la carpeta no existe para crearla.
    If Dir(Ruta & NombreCarpeta, vbDirectory) = "" Then
        MkDir Ruta & NombreCarpeta
    End If
    ' Formato de la hoja copiada
    Sheets("Received_Report").Copy
    With Cells
        .HorizontalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("A1").Select
    'formato guardar directorio
    Depositfile = Ruta & NombreCarpeta & "Received Report Warehouse - " & fechaActual & " - " & horaActual
    ActiveWorkbook.SaveAs Filename:=Depositfile, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    MsgBox ActiveWorkbook.FullName, vbOKOnly, "Reporte hecho en la siguiente ruta:"
    ActiveWindow.Close
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Respuesta
1

No veo la funcionalidad de ChDir en tu código, ya que cuando guardas el libro ya le indicas la ruta completa en depositfile.

Yo lo borraría

Si ya lo intente pero me marca error 

Creo que tu problema puede venir por el nombre del archivo con el que intentas guardar. Recuerda que caracteres como /\<>:? No son válidos para nombres de archivo.

Intenta guardar sin fechaactual y horaactual

Si necesitas fecha y hora en el archivo, deberás utilizar la función FORMAT para Date y Now para quitarle los caracteres que te dan el error

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas