ProdsExcel, Importar productos Excel
'código de la forma PRODSEXCEL (utilizado en el Ambiente de Desarrollo)
Sub Form_load
Me.Caption = “Importando desde Excel(tm)”
Archivo.File = Ambiente.Path & “\articulos.xls”
End Sub
Sub Button_Click()
Select Case ControlEvento.Tag
Case “Aceptar”
AplicaInventario
DescargaForma
Case “Cancelar”
DescargaForma
Case “cmdButton2”
ShellRun Parent.hWnd, “Open”, Archivo.File
End Select
End Sub
Sub AplicaInventario
Set excelConnection = CreateObject(“ADODB.Connection”)
excelConnection.ConnectionString = “driver={Microsoft Excel Driver (*.xls)};DBQ=” & Controles(“Archivo”).File
excelConnection.Open
ImportaInventario excelConnection
End Sub
Sub ImportaInventario( excelConnection )
Dim rstProductos
Dim bolAfectaInventario
Dim rstArticulo
Dim rstClaveAdd
Dim Articulos
Dim Ajuste
Dim rstImpuesto
Ambiente.Connection.Execute “UPDATE prods SET etiquetas = 0”
bolAfectaInventario = True
‘——————————————————————————————————————–
‘2011_11_22 Jose Felix jofelchez@gmail.com
‘Agregamos las Lineas a la Importación
Set rstExcel = CreaRecordSet( “SELECT linea FROM [ARTICULOS$] group by linea”, (excelConnection ) )
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
While Not rstExcel.EOF
Set rstLinea = CreaRecordSet( “SELECT * FROM lineas WHERE Linea = ‘” & rstExcel(“Linea”) & “‘”, Ambiente.Connection )
Query.Reset
If rstLinea.EOF Then
Query.strState = “INSERT”
Else
Query.strState = “UPDATE”
Query.Condition = “linea = ‘” & rstExcel(“linea”) & “‘”
End If
Query.AddField “lineas”,”linea”, rstExcel(“Linea”)
Query.AddField “lineas”,”descrip”,rstExcel(“Linea”)
Query.AddField “lineas”,”Usuario”, Ambiente.Uid
Query.AddField “lineas”,”usuFecha”, Date
Query.AddField “lineas”,”usuHora”,Formato( Time, “hh:mm:ss” )
Query.AddField “lineas”,”Numero”, 0
Query.CreateQuery
Query.Execute
Query.Reset
rstExcel.MoveNext
Wend
‘——————————————————————————————————————–
Set rstProductos = CreaRecordSet( “SELECT * FROM [ARTICULOS$]”, (excelConnection ) )
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
Set Articulos = CreateObject( “MyBArticulos.Articulos” )
Set Articulos.Ambiente = Ambiente
nEntrada = 0
nSalida = 0
While Not rstProductos.EOF
If Not clEmpty( “” & (rstProductos(“Código del producto”)) ) Then
If Not clEmpty( “” & (rstProductos(“Descripción”)) ) Then
Articulos.recalculoDeInventario rstProductos(“Código del producto”), Ambiente, False
Set rstArticulo = CreaRecordSet( “SELECT articulo, existencia FROM prods WHERE articulo = ‘” & rstProductos(“Código del producto”) & “‘”, Ambiente.Connection )
Query.Reset
If rstArticulo.EOF Then
Query.strState = “INSERT”
Else
Query.strState = “UPDATE”
Query.Condition = “articulo = ‘” & rstProductos(“Código del producto”) & “‘”
End If
Query.AddField “prods”,”articulo”, rstProductos(“Código del producto”)
Query.AddField “prods”,”descrip”,rstProductos(“Descripción”)
Query.AddField “prods”,”linea”, rstProductos(“Linea”)
Query.AddField “prods”,”marca”, “SYS”
Query.AddField “prods”,”fabricante”, “SYS”
Query.AddField “prods”,”precio1″, FDec( rstProductos(“Precio de venta”) )
Query.AddField “prods”,”costo_u”, FDec( rstProductos(“Costo ultimo”) )
Query.AddField “prods”,”etiquetas”, Val2( rstProductos(“Existencia”) )
Query.AddField “prods”,”Unidad”, rstProductos(“Unidad”)
Query.AddField “prods”,”precio2″, FDec( rstProductos(“Precio2”) )
Query.AddField “prods”,”precio3″, FDec( rstProductos(“Precio3”) )
Query.AddField “prods”,”precio4″, FDec( rstProductos(“Precio4”) )
Query.AddField “prods”,”precio5″, FDec( rstProductos(“Precio5”) )
If Val2(rstProductos(“Impuesto”)) > 0 Then
Set rstImpuesto = CreaRecordSet( “SELECT * FROM impuestos WHERE valor = ” & _
FDec( rstProductos(“Impuesto”) ), Ambiente.Connection )
Else
If ClAt(“0”, Trim(rstProductos(“Impuesto”))) > 0 AND Len(Trim(rstProductos(“Impuesto”))) = 1 Then
Set rstImpuesto = CreaRecordSet( “SELECT * FROM impuestos WHERE valor = ” & _
FDec( rstProductos(“Impuesto”) ), Ambiente.Connection )
Else
Set rstImpuesto = CreaRecordSet( “SELECT * FROM impuestos WHERE impuesto = ‘” & _
rstProductos(“Impuesto”) & “‘”, Ambiente.Connection )
End If
End If
If rstImpuesto.EOF Then
cImpuesto = “SYS”
Else
cImpuesto = rstImpuesto( “impuesto” )
End If
Query.AddField “prods”,”impuesto”, cImpuesto
Query.AddField “prods”,”paraventa”, 1
Query.AddField “prods”,”invent”, 1
Query.CreateQuery
Query.Execute
Query.Reset
If Not IsNull( rstProductos(“Existencia”) ) Then
Ajuste = FDec( rstProductos(“Existencia”) )’ – Val2( rstArticulo(“Existencia”) )
AfectandoInventario rstProductos(“Código del producto”), Ajuste
Articulos.recalculoDeInventario rstProductos(“Código del producto”), Ambiente, False
If Ajuste <> 0 Then
If Ajuste > 0 Then
nEntrada = CreaEntrada( nEntrada, rstProductos(“Código del producto”), Ajuste, FDec( rstProductos(“Costo ultimo”) ), rstProductos(“Descripción”) )
Else
nSalida = CreaSalida( nSalida, rstProductos(“Código del producto”), Ajuste, FDec( rstProductos(“Precio de venta”) ), rstProductos(“Descripción”) )
End If
Else
Query.Reset
Query.SQL = “UPDATE prods SET costo_u = ” & FDec( rstProductos(“Costo ultimo”) ) & _
” WHERE articulo = ‘” & rstProductos(“Código del producto”) & “‘”
Query.Execute
End If
End If
If Not clEmpty( “” & rstProductos(“Código de barras”) ) Then
Set rstClaveAdd = CreaRecordSet( “SELECT clave FROM clavesadd WHERE clave = ‘” & rstProductos(“Código de barras”) & “‘”, Ambiente.Connection )
Query.Reset
If rstClaveAdd.EOF Then
Query.strState = “INSERT”
Else
Query.strState = “UPDATE”
Query.Condition = “clave = ‘” & rstProductos(“Código de barras”) & “‘”
End If
Query.AddField “clavesadd”,”Clave”, rstProductos(“Código de barras”)
Query.AddField “clavesadd”,”Dato1″, “”
Query.AddField “clavesadd”,”Usuario”, Ambiente.Uid
Query.AddField “clavesadd”,”usuFecha”, Date
Query.AddField “clavesadd”,”usuHora”, Formato( Time, “hh:mm:ss” )
Query.AddField “clavesadd”,”Dato2″, “”
Query.AddField “clavesadd”,”Articulo”, rstProductos(“Código del producto”)
Query.AddField “clavesadd”,”Cantidad”, 1
Query.AddField “clavesadd”,”Unidad”, “”
If bolAfectaInventario = True Then
Query.AddField “clavesadd”,”Existencia”, 0
End If
Query.AddField “clavesadd”,”Libre”, 0
Query.AddField “clavesadd”,”Exportado”, 0
Query.AddField “clavesadd”,”Precio”, 0
Query.AddField “clavesadd”,”imagen”, “”
Query.AddField “clavesadd”,”etiquetas”, 0
Query.CreateQuery
Query.Execute
End If
End If
End If
Detalle.Caption = “” & rstProductos(“Descripción”)
rstProductos.MoveNext
Wend
MyMessage “Catálogo importado”
If Question( “Desea imprimir etiquetas de codigo de barras”, 1 ) = True Then
Script.RunProcess “ZEBRA2844”, Me, Ambiente
End If
End Sub
Sub AfectandoInventario( strArticulo, Existencia )
Dim rstProd
Dim n
Dim Query
Dim rstInvInicial
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
Set rstProd = CreaRecordSet( “SELECT articulo, existencia, costo_u FROM prods WHERE articulo = ‘” & strArticulo & “‘”, Ambiente.Connection )
n = n + 1
If Existencia = 0 Then
Exit Sub
End If
Set MovInv = CreateObject( “MyBInventario.Inventario” )
Set MovInv.Ambiente = Ambiente
MovInv.FechaMov = Date
MovInv.uId = Me.Ambiente.uId
MovInv.EntradaSalida = “S”
MovInv.cMetodo = Me.Ambiente.costeo
MovInv.EstacionSalida = Trim(Ambiente.Estacion)
While Not rstProd.EOF
n = n + 1
Query.Reset
Query.strState = “INSERT”
Query.AddField “movsinv”,”MOVIMIENTO”, 1
If Existencia > 0 Then
MovInv.EntradaSalida = “E”
MovInv.nMovimiento = 1
MovInv.TipoMovim = “EX+”
MovInv.NoMovim = 1
MovInv.TipoOperacion = “EX+”
MovInv.nCantidad = Existencia
MovInv.AfectaCosto = True
Else
MovInv.EntradaSalida = “S”
MovInv.nMovimiento = 1
MovInv.TipoMovim = “EX-”
MovInv.NoMovim = 1
MovInv.TipoOperacion = “EX-”
MovInv.nCantidad = Existencia * -1
End If
MovInv.nPrecio = rstProd(“costo_u”)
MovInv.nAlmacen = 1
MovInv.cArticulo = strArticulo
MovInv.AfectaInventario
Set rstInvInicial = CreaRecordSet( “SELECT * FROM invinicial WHERE articulo = ‘” & rstProd(“articulo”) & “‘”, _
Ambiente.Connection )
If rstInvInicial.EOF Then
Query.Reset
Query.strState = “INSERT”
Query.AddField “invinicial”,”fecha”, DateSerial( 2000, 01, 01 )
Query.AddField “invinicial”,”articulo”, rstProd(“articulo”)
Query.AddField “invinicial”,”existencia”, Existencia
Query.AddField “invinicial”,”costo”, rstProd(“costo_u”)
Query.CreateQuery
Query.Execute
End If
rstProd.MoveNext
Wend
End Sub
Function FDec( Number )
FDec = Replace( “” & Number, “,”, “.” )
End Function
Function CreaEntrada( Entrada, Articulo, Cantidad, Costo, Descripcion )
Dim Query
Dim rstArticulo
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
If Entrada = 0 Then
Query.Reset
Query.strState = “INSERT”
Entrada = TraeSiguiente( “MovEnt”, Ambiente.Connection )
Query.AddField “entradas”, “entrada”, Entrada
Query.AddField “entradas”, “ocupado”, 1
Query.AddField “entradas”, “f_emision”, Date
Query.AddField “entradas”, “tipo_doc”, “EX+”
Query.AddField “entradas”, “importe”, 0
Query.AddField “entradas”, “costo”, 0
Query.AddField “entradas”, “almacen”, 1
Query.AddField “entradas”, “estado”, “CO”
Query.AddField “entradas”, “observ”, vbNullString
Query.AddField “entradas”, “tipo_cam”, 1
Query.AddField “entradas”, “moneda”, Ambiente.Moneda
Query.AddField “entradas”, “datos”, vbNullString
Query.AddField “entradas”, “usuario”, Ambiente.uId
Query.AddField “entradas”, “usufecha”, Date
On Error Resume Next
Query.AddField “entradas”, “usuhora”, Libreria.Formato(Time, “hh:mm:ss”)
On Error GoTo 0
Query.CreateQuery
Query.Execute
End If
Query.Reset
Query.strState = “INSERT”
Query.AddField “entpart”,”ENTRADA”, Entrada
Query.AddField “entpart”,”TIPO_DOC”, “EX+”
Query.AddField “entpart”,”NO_REFEREN”, Entrada
Query.AddField “entpart”,”ARTICULO”, Articulo
Query.AddField “entpart”,”CANTIDAD”, Cantidad
Query.AddField “entpart”,”PRECIO”, Costo
Query.AddField “entpart”,”OBSERV”, Descripcion
Query.AddField “entpart”,”PARTIDA”, 0
Query.AddField “entpart”,”ID_ENTRADA”, TraeSiguiente( “entpart”, Ambiente.Connection )
Query.AddField “entpart”,”Usuario”, Ambiente.Uid
Query.AddField “entpart”,”UsuFecha”, Date
Query.AddField “entpart”,”UsuHora”, Libreria.Formato( Time, “hh:mm:ss” )
Query.AddField “entpart”,”PRCANTIDAD”, 0
Query.AddField “entpart”,”PRDESCRIP”, “”
Query.AddField “entpart”,”CLAVEADD”, “”
Query.CreateQuery
Query.Execute
CreaEntrada = Entrada
End Function
Function CreaSalida( Salida, Articulo, Cantidad, Precio, Descripcion )
Dim Query
Dim rstArticulo
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
If Salida = 0 Then
Query.Reset
Query.strState = “INSERT”
Salida = TraeSiguiente( “MovSal”, Ambiente.Connection )
Query.AddField “salidas”,”Salida”, Salida
Query.AddField “salidas”,”ocupado”, 1
Query.AddField “salidas”,”tipo_doc”, “EX-”
Query.AddField “salidas”,”F_EMISION”, Date
Query.AddField “salidas”,”IMPORTE”, 0
Query.AddField “salidas”,”COSTO”, 0
Query.AddField “salidas”,”ALMACEN”, 1
Query.AddField “salidas”,”ESTADO”, “CO”
Query.AddField “salidas”,”OBSERV”, “Salida automática por excel”
Query.AddField “salidas”,”DATOS”, “”
Query.AddField “salidas”,”USUARIO”, Ambiente.Uid
Query.AddField “salidas”,”USUFECHA”, Date
Query.AddField “salidas”,”USUHORA”, Libreria.Formato( Time, “hh:mm:ss” )
Query.AddField “salidas”,”traspaso”, 0
Query.AddField “salidas”,”almt”, 0
Query.AddField “salidas”,”estraspaso”, 0
Query.AddField “salidas”,”sucursal”, “”
Query.AddField “salidas”,”esparasucursal”, 0
Query.AddField “salidas”,”entsuc”, 0
Query.AddField “salidas”,”folio”, TraeSiguiente(Trim(Ambiente.Estacion) & “salida”, Ambiente.Connection)
Query.AddField “salidas”,”estacion”, Ambiente.Estacion
Query.CreateQuery
Query.Execute
End If
Query.Reset
Query.strState = “INSERT”
Query.AddField “salpart”,”SALIDA”, Salida
Query.AddField “salpart”,”TIPO_DOC”, “EX-”
Query.AddField “salpart”,”NO_REFEREN”, Salida
Query.AddField “salpart”,”ARTICULO”, Articulo
Query.AddField “salpart”,”CANTIDAD”, Cantidad * -1
Query.AddField “salpart”,”PRECIO”, Precio
Query.AddField “salpart”,”OBSERV”, Descripcion
Query.AddField “salpart”,”PARTIDA”, 0
Query.AddField “salpart”,”ID_SALIDA”, TraeSiguiente( “salpart”, Ambiente.Connection )
Query.AddField “salpart”,”Usuario”, Ambiente.Uid
Query.AddField “salpart”,”UsuFecha”, Date
Query.AddField “salpart”,”UsuHora”, Libreria.Formato( Time, “hh:mm:ss” )
Query.AddField “salpart”,”PRCANTIDAD”, 0
Query.AddField “salpart”,”PRDESCRIP”, “”
Query.AddField “salpart”,”CLAVEADD”, “”
Query.AddField “salpart”,”costo”, 0
Query.CreateQuery
Query.Execute
CreaSalida = Salida
End Function
Que tal la verdad soy nuevo en esto.. y apenas estoy checando su producto.. pero he tenido algunos problemas para exportar productos desde excel me manda este error Button_Click PRODSEXCEL El nombre de columna ‘ensambladoenlinea’ no es válido. —> 0 -2147217900 En línea: 97
que tal a mi me pasa lo mismo que a jose antonio alguien lo resolvio???? Button_Click PRODSEXCEL El nombre de columna ‘ensambladoenlinea’ no es válido. —> 0 -2147217900 En línea: 97
Esto soluciona el error en la versión 2012?
Me pasa lo mismo… Button_Click PRODSEXCEL No se encontró el elemento en la colección que corresponde al nombre o el ordinal solicitado. —> 0 3265 En línea: 83
tengo este problema al momento de importar el archivo de “artículos” previamente modificado, al cual le agregue código, descripción y linea: If ClAt(“0”, Trim(rstProductos(“Impuesto”))) > 0 AND Len(Trim(rstProductos(“Impuesto”))) = 1 Then
Buenas tardes. Por favor intente colocar en la columna IMPUESTO el valor 0 o SYS encaso de que sus productos no lleven iva o coloque IVA si es que se desglosará el impuesto adicional.
Saludos
José Félix
Podrian ayudarme cuando intento importar articulos desde excel me aparece ” Button_Click PRODSEXCEL No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido. —> 0 3265 En línea: 89″ ayuda por favor
Buenas tardes. Le puedo ofrecer un parche que le soluciona el error , en 700 pesos a la cuenta que aparece en la parte superior izquierda
Saludos
José Félix
El error ” Button_Click PRODSEXCEL No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido. —> 0 3265 En línea: 89?, lo pueden corregir agregando la columna “Linea”, y llenándola con el valor SYS, también las demás columnas deben estar llenos de acuerdo al tipo de celda que les corresponde. Por ejemplo, en “Impuesto” poner IVA (ya lo habían comentado anteriormente, José Félix). Espero les sirva a alguien, sin fines de lucro.
Amigos:
El error ” Button_Click PRODSEXCEL No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido. —> 0 3265 En línea: 89?, lo pueden corregir agregando la columna “Linea”, y llenándola con el valor SYS, también las demás columnas deben estar llenos de acuerdo al tipo de celda que les corresponde. Por ejemplo, en “Impuesto” poner IVA (ya lo habían comentado anteriormente, José Félix). Espero les sirva a alguien, sin fines de lucro.
Muchas gracias CPC por este recordatorio, se convierte en aportación para los nuevos visitantes que tengan la misma duda.
Saludos
José Félix
Muchas Gracias @CPC me sirvio bastante tu aporte, esta recibiendo ese error al Exportar. PEro ya quedo solucionado
Gracias
estoy tratando de importarlos articculos y este mensaje es el que me sale
Button_Click PRODSEXCEL No se encontró el elemento en la colección que corresponde al nombre o el ordinal solicitado. —> 0 3265 En línea: 87
me pueden orientar porfavor
Buen día
Por favor apóyeme con un pomo de 700 y le envío un parche para que pueda importar sin problemas.
Saludos
José Félix
hola este error lo solucione agregando la columna Línea poniendo “SYS” en las celdas y agregando también la columna Unidad poniendo en las celdas “pzas” con esto me dejo importar mi inventario espero les sirva
Muchas gracias por su colaboración, señor Martínez. Estoy seguro que será de utilidad para los demás compañeros.
Saludos
José Félix
Exelente aporte me sirvio de mucho gracias
Muchas gracias. Me sirvió mucho.