Dos módulos que requiero que se ejecuten en un orden especifico co un solo botón.

Tengo una hoja de datos donde "X11" es la categoría y "X10" la sub- categorioa

Realice macros separadas la primera, esta diseñada para que en F:\ Reportes se cree una carpeta dependiendo del contenido de la celda "X11" y a su vez crea una sub-carpeta dependiendo del contenido de la celda "X10"

Es decir: si en "x11" dice "Sucursal2" y en "x10" Depto1. Se generan carpetas de la sig manera:

F:\ Reportes\Sucursal2"\Depto1\

-------------------------------------

Sub guarda1()
'Por.Lis
'guarda_completo

Dim Nom_Carpeta As String
Nom_Carpeta = Range("x11").Value
If Nom_Carpeta = "" Then
Exit Sub
End If

Dim Nom_SubCarpeta As String
Nom_SubCarpeta = Range("x10").Value
If Nom_SubCarpeta = "" Then
Exit Sub
End If

On Local Error Resume Next
MkDir "F:\Reportes\" & Nom_Carpeta
MkDir "F:\Reportes\" & Nom_Carpeta & "\" & Nom_SubCarpeta

End Sub

---------------------------------------------

La segunda. Macro es para que guarde una parte de la hoja -Range("B2:AG101") - como reporte en PDF dependiendo del contenido de las mismas celdas "X11" es la categoría y "X10" la sub- categoría, con el nombre de otra celda "AB16" - (una fecha).

Es decir: si en "x11" dice "Sucursal2" y en "x10" Depto1,, y en "AB16" dice "5 -May-2016" considernado que ambas celdas determinan la intentar del archivo a guardar (Ya que tengo 15 Sucursales y muchísimos códigos de departamento)

Se guardria de la sig manera.

F:\ Reportes\Sucursal2"\Depto1\ (aqui adentro el archivo " 5-May-2016.PDF")

------------------------------------------------

Sub guarda2()
'Por.Lis
'PDF
nbreLibro = Range("AB16")
r1 = "D:\Reportes\"
r4 = Range("X10"), "dd-mm-yyyy") 

'
If [x11] <> "" Then
r2 = "Sucursal2\"
Range("B2:AG101" & uf).Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=r1 & r2 & r4 & nbreLibro & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End If
Exit Sub
If [x11] <> "" Then
r3 = "Sucursal3\"
Range("B2:AG101" & uf).Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=r1 & r3 & r4 & nbreLibro & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End If
Exit Sub
End Sub

-------------------------------------------

Posteriormente intente que ambas macros se ejecutaran con un solo macros y no pude, me envía error!

--------------------

Sub Principal()

Call guarda1

Call guarda2

End Sub

Sub Master()
Dim i As Integer

Run "guarda1"

Run "guarda2"

Next
End Sub

----------------------------------------------

y al oprimir depurar!!

Lo que quiero es que se puedan correr ambas, o si se puede generar una sola que haga todo.

Respuesta
1

Si pones lo siguiente en un mismo módulo y ejecutas la macro "Principal", si me funciona.

Sub guarda1()
'Por.Lis
'guarda_completo
    Dim Nom_Carpeta As String
    Nom_Carpeta = Range("x11").Value
    If Nom_Carpeta = "" Then
        Exit Sub
    End If
    Dim Nom_SubCarpeta As String
    Nom_SubCarpeta = Range("x10").Value
    If Nom_SubCarpeta = "" Then
        Exit Sub
    End If
    On Local Error Resume Next
    MkDir "F:\Reportes\" & Nom_Carpeta
    MkDir "F:\Reportes\" & Nom_Carpeta & "\" & Nom_SubCarpeta
End Sub
'
Sub guarda2()
'Por.Lis
'PDF
    nbreLibro = Range("AB16")
    r1 = "D:\Reportes\"
    r4 = Format(Range("X10"), "dd-mm-yyyy")
    '
    If [x11] <> "" Then
        r2 = "Sucursal2\"
        Range("B2:AG101" & uf).Select
        Selection.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=r1 & r2 & r4 & nbreLibro & ".pdf", _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
    End If
    Exit Sub
    If [x11] <> "" Then
        r3 = "Sucursal3\"
        Range("B2:AG101" & uf).Select
        Selection.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=r1 & r3 & r4 & nbreLibro & ".pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
    End If
    Exit Sub
End Sub
'
Sub Principal()
    Call guarda1
    Call guarda2
End Sub

Intenta ejecutar la macro Principal y me comentas si tienes problemas.

Si se resolvió el problema, r ecuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas