compactar con zip o winrar
Amigo Joan, como le comenté he puesto a cada exportación que vaya comprimiendo la carpeta, hasta ahora me funcionó bien y lo hice así:
Private Sub cmdExpPago_Click()
Dim Tbl_Temp As DAO.Recordset
Set Tbl_Temp = CurrentDb.OpenRecordset("Select CodEmisora FROM 01TNomencladorEmisora", , dbReadOnly)
Tbl_Temp.MoveFirst
Do Until Tbl_Temp.EOF
DoCmd.OutputTo acOutputQuery, "InformeACDAMOC", "HTML(*.html)", "D:\SG RADIO\INFORMACIONES\EXPORTACIONES\InformePagoACDAM1 " & DLookup("CodEmisora", "01TNomencladorEmisora") & ".html"
DoCmd.OutputTo acOutputQuery, "InformeACDAMTI", "HTML(*.html)", "D:\SG RADIO\INFORMACIONES\EXPORTACIONES\InformePagoACDAM2 " & DLookup("CodEmisora", "01TNomencladorEmisora") & ".html"
Tbl_Temp.MoveNext
Loop
Tbl_Temp.Close
Set Tbl_Temp = Nothing
Dim CarpetaOrigen As String
Dim RarFileName As String
Dim Password As String
' Ruta de la carpeta que deseas comprimir
CarpetaOrigen = Application.CurrentProject.Path & "\INFORMACIONES\EXPORTACIONES"
' Nombre y ubicación del archivo comprimido
RarFileName = "D:\" & DLookup("Emisora", "01TNomencladorEmisora") & " EXPORTACIONES.rar"
' Contraseña para el archivo RAR
Password = "cd202319*"
' Comando para comprimir con WinRAR
Dim Command As String
Command = """C:\Program Files\WinRAR\WinRAR.exe"" a -hp" & Password & " """ & RarFileName & """ """ & CarpetaOrigen & """"
DoCmd.Hourglass True
Shell Command, vbNormalFocus
WaitForRarCompletion 5 ' Espera 5 segundos
DoCmd.Hourglass False
MsgBox "La carpeta se ha comprimido correctamente.", vbInformation
End Sub
Ahora, es este paso no lo hace, aquí se construye un libro con varias hojas a partir de consulta:
Private Sub cmdExpDAOC_Click()
Dim rstNombrePrograma As DAO.Recordset, _
rstTituloTema As DAO.Recordset, _
qdf As DAO.QueryDef, _
strSQL As String, _
strHoja As String, _
strArchivo As String, _
strTitulo As String, _
Campo As DAO.Field, _
lngColumna As Long, _
i As Long, _
xls As Object
Const xlWBATWorksheet = -4167
Const xlAutomatic = -4105
Const xlSolid = 1
Const xlThemeColorDark1 = 1
Const xlToRight = -4161
Const xlNormal = -4143
On Error GoTo cmdExpDAOC_Click_TratamientoErrores
strSQL = "SELECT NombrePrograma"
strSQL = strSQL & " FROM ProgramasEmitidosDerAut"
strSQL = strSQL & " GROUP BY NombrePrograma"
Set xls = CreateObject("Excel.Application")
xls.Visible = True
xls.Workbooks.Add xlWBATWorksheet
strHoja = xls.ActiveSheet.Name
Set rstNombrePrograma = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
If Not (rstNombrePrograma.EOF And rstNombrePrograma.BOF) Then
Do
strSQL = "SELECT TituloTema, NombreAutor, NombreInterprete, Sonatas, Fecha, Calculo, Local, Plantilla "
strSQL = strSQL & "FROM ProgramasEmitidosDerAut"
strSQL = strSQL & " WHERE NombrePrograma = Parametro1"
Set qdf = CurrentDb.CreateQueryDef("", strSQL)
qdf.Parameters("Parametro1") = rstNombrePrograma!NombrePrograma
Set rstTituloTema = qdf.OpenRecordset
xls.ActiveWorkbook.Sheets.Add Before:=xls.Worksheets(xls.Worksheets.Count)
xls.ActiveSheet.Name = rstNombrePrograma!NombrePrograma
With xls
lngColumna = 1
For Each Campo In rstTituloTema.Fields
strTitulo = ""
For i = 1 To Len(Campo.Name)
strTitulo = strTitulo & Mid(Campo.Name, i, 1)
If i < Len(Campo.Name) Then
If EsMayuscula(Mid(Campo.Name, i + 1, 1)) Then strTitulo = strTitulo & " "
End If
Next i
.ActiveSheet.Cells(1, lngColumna) = strTitulo
lngColumna = lngColumna + 1
Next Campo
.Range("A1").Select
.Range(.Selection, .Selection.End(xlToRight)).Select
.Selection.Font.Bold = True
With .Selection.Interior
.Pattern = xlSolid
.ColorIndex = 15
End With
End With
If Not (rstTituloTema.EOF And rstTituloTema.BOF) Then
xls.ActiveSheet.Cells(2, 1).CopyFromRecordset rstTituloTema
End If
xls.Columns("A:G").EntireColumn.AutoFit
rstNombrePrograma.MoveNext
Loop Until rstNombrePrograma.EOF
End If
xls.Application.DisplayAlerts = False
xls.ActiveWorkbook.Worksheets(strHoja).Delete
strArchivo = "D:\SG RADIO\INFORMACIONES\ACDAM\" & DLookup("Emisora", "01TNomencladorEmisora") & " Derecho Autor Obras Completas.xls"
If Not Nz(strArchivo, "") = "" Then
xls.ActiveWorkbook.SaveAs FileName:=strArchivo, FileFormat:=xlNormal
Else
xls.ActiveWorkbook.Saved = True
End If
xls.Application.DisplayAlerts = True
cmdExpDAOC_Click_Salir:
On Error Resume Next
xls.Quit
Set xls = Nothing
Set qdf = Nothing
CierraRecordsetDAO rstNombrePrograma
CierraRecordsetDAO rstTituloTema
On Error GoTo 0
Exit Sub
cmdExpDAOC_Click_TratamientoErrores:
MsgBox "Error " & Err & " en proc.: cmdExpDAOC_Click de Documento VBA: Form_frmFrmIniCaptacion (" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
Resume cmdExpDAOC_Click_Salir
Resume Next
Dim CarpetaOrigen As String
Dim RarFileName As String
Dim Password As String
' Ruta de la carpeta que deseas comprimir
CarpetaOrigen = Application.CurrentProject.Path & "\INFORMACIONES\ACDAM"
' Nombre y ubicación del archivo comprimido
RarFileName = "D:\" & DLookup("Emisora", "01TNomencladorEmisora") & " ACDAM.rar"
' Contraseña para el archivo RAR
Password = "cd202319*"
' Comando para comprimir con WinRAR
Dim Command As String
Command = """C:\Program Files\WinRAR\WinRAR.exe"" a -hp" & Password & " """ & RarFileName & """ """ & CarpetaOrigen & """"
DoCmd.Hourglass True
Shell Command, vbNormalFocus
WaitForRarCompletion 5 ' Espera 5 segundos
DoCmd.Hourglass False
MsgBox "La carpeta se ha comprimido correctamente.", vbInformation
End Sub
Me pudiera ayudar? el tiempo que aparece aquí debajo es lo que la instrucción espera para ejecutarse o es otra cosa:
WaitForRarCompletion 5 ' Espera 5 segundos
Estaba pensando que a lo mejor era eso, no se