Problema con Macros, Botón Procesar
HOLa AYUDENME Caso de VIDa o MUERTE pero más de MUERTE : Tengo un Excel con 3 HOJAS ( HOja1=Total, Hoja2=Lima, Hoja3=Provincia ) con una MACROS con el Botón Procesar y un ERROR que no se que pasa miren!... :(
Private Sub CmdProcesar_Click()
Dim CMDVENTA As ADODB.Command
Dim CMDCOMBOS As ADODB.Command
Dim RSVENTA As New ADODB.Recordset
Dim RSCOMBOS As New ADODB.Recordset
'Acelerar Macros'
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
'Fin de la Aceleracion'
FECINI = TxtFecIni.Value
FECFIN = TxtFecfin.Value
SUBCC = CboSubCanalCtrl.Value
Hoja1.Cells(4, 2) = "TOTAL " & SUBCC
Set cn = New ADODB.Connection
With cn
.CursorLocation = adUseClient
.ConnectionString = "PROVIDER=SQLOLEDB;DATA SOURCE=AJINOMOTONT2;INITIAL CATALOG=prdsap;USER ID=PLANINF; PASSWORD=INFORMACION; "
.Open
If CboSubCanalCtrl.Value <> "" Then
SQL1 = "select dmtdi_fecha.anno, dmtdi_fecha.mes, dmtdi_materiales.cod_jerarquia_mat AS ID_PRESENTACION, dmtfa_ventas.cod_canal, "
SQL1 = SQL1 + "dmtdi_canal.dsc_canal, dmtfa_ventas.cod_org_ventas,(left(dmtdi_zona_ventas.dsc_zona_ventas,4)) as [Desc_Zona], (left(dmtdi_zona_ventas.dsc_zona_ventas,4)) as [ZONAS_CONTROL], "
SQL1 = SQL1 + "dmtdi_zona_ventas.dsc_zona_ventas, dmtfa_ventas.cod_solicitante,dmtfa_ventas.cod_material,dmtfa_ventas.cod_jerarquia_material, "
SQL1 = SQL1 + "(left(dmtfa_ventas.cod_jerarquia_material,3)+ ' ' + left(dmtdi_materiales.dsc_material,3)) as [Cod_Clase], "
SQL1 = SQL1 + "dmtfa_ventas.cod_grupo_vendedores,dmtdi_grupo_vendedores.dsc_grupo_vendedores,dmtdi_oficina_ventas.cod_oficina_ventas, "
SQL1 = SQL1 + "dmtdi_oficina_ventas.dsc_oficina_ventas,SUM(dmtfa_ventas.ctd_neto_ventas) AS peso "
SQL1 = SQL1 + "FROM dmtfa_ventas inner join dmtdi_materiales on dmtfa_ventas.cod_MATERIAL=dmtdi_materiales.cod_MATERIAL inner join dmtdi_canal "
SQL1 = SQL1 + "on dmtfa_ventas.cod_canal=dmtdi_canal.cod_canal inner join dmtdi_zona_ventas on dmtfa_ventas.cod_zona_ventas=dmtdi_zona_ventas.cod_zona_ventas inner join dmtdi_grupo_vendedores "
SQL1 = SQL1 + "on dmtfa_ventas.cod_grupo_vendedores=dmtdi_grupo_vendedores.cod_grupo_vendedores inner join dmtdi_clase_posicion ON dmtfa_ventas.cod_tipo_posicion = dmtdi_clase_posicion.cod_clase_posicion inner join dmtdi_oficina_ventas "
SQL1 = SQL1 + "on dmtfa_ventas.cod_oficina_ventas=dmtdi_oficina_ventas.cod_oficina_ventas inner join dmtdi_fecha on dmtfa_ventas.fch_documento=dmtdi_fecha.id_fecha "
SQL1 = SQL1 + "WHERE dmtfa_ventas.fch_documento between convert(datetime,' " & FECINI & " ',103) and convert (datetime,' " & FECFIN & "',103) and dbo.dmtdi_clase_posicion.dsc_tipo_posicion IN ('VENTA')and "
SQL1 = SQL1 + "dmtfa_ventas.cod_canal<>'50'and dmtfa_ventas.cod_org_ventas='1100' "
SQL1 = SQL1 + "GROUP BY dmtdi_fecha.anno,dmtdi_fecha.mes,dmtdi_materiales.cod_jerarquia_mat,dmtfa_ventas.cod_canal, dmtdi_canal.dsc_canal,dmtfa_ventas.cod_org_ventas, dmtfa_ventas.cod_zona_ventas, "
SQL1 = SQL1 + "dmtdi_zona_ventas.dsc_zona_ventas, dmtfa_ventas.cod_solicitante, dmtfa_ventas.cod_material,dmtfa_ventas.cod_jerarquia_material,dmtdi_materiales.dsc_material,dmtfa_ventas.cod_grupo_vendedores, "
SQL1 = SQL1 + "dmtdi_grupo_vendedores.dsc_grupo_vendedores, dmtdi_oficina_ventas.cod_oficina_ventas, dmtdi_oficina_ventas.dsc_oficina_ventas "
SQL1 = SQL1 + "ORDER BY dmtdi_fecha.anno,dmtdi_fecha.mes,dmtdi_materiales.cod_jerarquia_mat "
Set CMDVENTA = New ADODB.Command
With CMDVENTA
.ActiveConnection = cn
.CommandType = adCmdText
.CommandText = SQL1
.CommandTimeout = 180
Set RSVENTA = CMDVENTA.Execute
X = RSVENTA.RecordCount
End With
Limpiar
ULTIMO = 170
intNumeroHojas = ThisWorkbook.Sheets.Count
If I <> 2 Then I = 2 Else I = 2
'LLENAR VENTAS
If X <> 0 Then
For CODV = 1 To RSVENTA.RecordCount
ANNO = RSVENTA.Fields("ANNO").Value
MES = RSVENTA.Fields("MES").Value
IDZONAC = RSVENTA.Fields("Desc_Zona").Value
ZONAC = RSVENTA.Fields("ZONAS_CONTROL").Value
CODIGO = RSVENTA.Fields("ID_PRESENTACION").Value
For NCOL = 4 To 90
If IsDate(Hoja1.Cells(12, NCOL)) = False Then EXFECHA = 0 Else EXFECHA = Hoja1.Cells(12, NCOL)
EXANNO = Year(EXFECHA)
EXMES = Month(EXFECHA)
If EXANNO = ANNO And EXMES = MES Then
COL = NCOL
Exit For
End If
Next
If ThisWorkbook.Sheets(I).Range("B4") = "" Then
ThisWorkbook.Sheets(I).Range("B4") = IDZONAC
ThisWorkbook.Sheets(I).Range("B6") = ZONAC
ThisWorkbook.Sheets(I).Name = ZONAC
For CODEX = 13 To ULTIMO
CODIGOEXCEL = ThisWorkbook.Sheets(I).Cells(CODEX, 1)
If CODIGOEXCEL = CODIGO Then
NFILA = CODEX
ThisWorkbook.Sheets(I).Cells(NFILA, COL) = ThisWorkbook.Sheets(I).Cells(NFILA, COL) + RSVENTA.Fields("PESO").Value
Exit For
End If
Next
ElseIf ThisWorkbook.Sheets(I).Range("B4") = IDZONAC Then
For CODEX = 13 To ULTIMO
CODIGOEXCEL = ThisWorkbook.Sheets(I).Cells(CODEX, 1)
If CODIGOEXCEL = CODIGO Then
NFILA = CODEX
ThisWorkbook.Sheets(I).Cells(NFILA, COL) = ThisWorkbook.Sheets(I).Cells(NFILA, COL) + RSVENTA.Fields("PESO").Value
Exit For
End If
Next
ElseIf ThisWorkbook.Sheets(I).Range("B4") <> IDZONAC Then
I = I + 2
ThisWorkbook.Sheets(I).Range("B4") = IDZONAC
ThisWorkbook.Sheets(I).Range("B6") = ZONAC
ThisWorkbook.Sheets(I).Name = ZONAC ' Aquii sta el ERRO, PLEASE'
For CODEX = 13 To ULTIMO
CODIGOEXCEL = ThisWorkbook.Sheets(I).Cells(CODEX, 1)
If CODIGOEXCEL = CODIGO Then
NFILA = CODEX
ThisWorkbook.Sheets(I).Cells(NFILA, COL) = ThisWorkbook.Sheets(I).Cells(NFILA, COL) + RSVENTA.Fields("PESO").Value
Exit For
End If
Next
End If
RSVENTA.MoveNext
Next
End If
I = I + 1
NH = 0
For NH = I To intNumeroHojas
ThisWorkbook.Sheets(I).Name = NH
I = I + 1
Next
MsgBox "FIN DEL PROCESO", vbInformation, "PROCESO"
I = 2
End If
End With
'Acelerar Nuestra Macros
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.CalculateBeforeSave = True
Application.EnableEvents = True
ActiveSheet.DisplayPageBreaks = True
Application.CutCopyMode = False
'Fin de la Aceleracion'
End Sub
************************ Xfa un Capo q me ayude a Solucionar este ERROR, soy d Lima Peru. Mi Correo es = [email protected]...... Regalo PANETONNNNNNNNN solo LIMA, PERU:)