Jump to content

AlexanderS

Moderators
  • Content Count

    1,287
  • Joined

  • Last visited

  • Days Won

    52

Everything posted by AlexanderS

  1. Hola @Pirtrafilla, solo debes colocar dentro de la cadena SQL la conversión al formato deseado, en el caso de moneda quedaria algo así: Select [Proveedor],[Referencia],[Usuario],FormatCurrency([Importe]) as Importe,[Porcentaje],[Previsto],[Contable] En el caso de no querer decimales asi: Select [Proveedor],[Referencia],[Usuario],FormatCurrency([Importe],0) as Importe,[Porcentaje],[Previsto],[Contable] Comentas, saludos.
  2. Este es un foro de ayuda que se dedica a responder dudas puntuales, si lo que buscas es un trabajo completo estas escribiendo en el lugar equivocado. Puedes cotizar el costo del trabajo aqui:https://excelservicios.com/blog/facturador-sunat-macros-excel/, quien es el autor del video que comentas. Saludos.
  3. Buenos días, por favor lee las Normas del foro https://ayudaexcel.com/foro/terms/ Saludos
  4. Lo mas simple esque arriba del listbox coloques algunos Label's con los titulos de las columnas. Saludos
  5. En SQL no se usa "*" despues de un like debes utilizar "%". Elemplo : SELECT [Nombre_Completo],[Edad] FROM Estudiantes WHERE Nombre_Completo like '%Pablo%' Saludos.
  6. Hola, podrias intentar llenar el listbox así: Private Sub UserForm_Initialize() 'macro para llenar Listbox con datos de consulta With ListBox1 'Asignamos 3 columnas de la tabla .ColumnCount = 10 'Definimos el tamaño de las columnas .ColumnWidths = "40 pt; 50 pt; 140 pt; 40 pt; 50 pt; 30 pt; 50 pt; 50 pt; 120 pt; 60 pt" 'Definimos como fila de títulos, la primera fila de la tabla .ColumnHeads = True End With Conexión sql = "Select [PERIODO],[CODIGO_OT],[DESCRIPCION_OT],[CENTRO_CONTABLE],[NRO_COMPROBANTE]" & _ "[AGRUPACION],[IMPORTE_DEBE],[IMPORTE_HABER],[CONCEPTO],[GRUPO]" & _ "From Contable Where GRUPO is null" Rst.Open sql, Conn, 3, 3, 1 If Rst.EOF = False Then Me.ListBox1.Column = Rst.GetRows Rst.Close Set Rst = Nothing Conn.Close Set Conn = Nothing End Sub Saludos
  7. Tienes razón, ya que si no me equiboco ODBC no tiene soporte para "Case When", este aplicaria si tu base de datos esta en un servidor SQL. En tu caso puedes usar alternativas como "IIF" o para mi personalmente la mejor opción "switch". Private Sub SALDOS() ABRIR_RS Sql = "SELECT Store_Name, switch(" & _ " Store_Name = 'Los Angeles',Sales * 2," & _ " Store_Name = 'San Diego', Sales * 1.5," & _ " true,0) as Nuevas_ventas,Txn_Date FROM [Store_Information$]" Rs.Open Sql, Cnn, 1, 1 End Sub Tambien debes tener cuidado a la hora de escribir el nombre de la tabla ya que estas trabajando desde una hoja de excel debes escribir FROM [Store_Information$] no FROM Store_Information Saludos
  8. Hola @nickmartinez, el error es simple, se te olvido colocar los "=", ademas estas utilizando condiciones Multiples. Este es tu código: Sql = "SELECT Store_Name, (CASE Store_Name" & _ " WHEN 'Los Angeles' THEN Sales * 2" & _ " WHEN 'San Diego' THEN Sales * 1.5" & _ " Else Sales End) as Nuevas_ventas,Txn_Date FROM Store_Information" Deberia ser así: Sql = "SELECT Store_Name, (CASE WHEN Store_Name = 'Los Angeles' THEN Sales * 2" & _ " WHEN Store_Name ='San Diego' THEN Sales * 1.5" & _ " Else Sales End) as Nuevas_ventas,Txn_Date FROM Store_Information" Saludos
  9. @sretamalb esta en todo su derecho de realizar consultas en el foro, ya depende de las "buenas personas" si ayudan o no. @Leopoldo Blancas no entiendo tu preocupación, es decisión de cada usuario si quiere aprender o no, al igual que lo es si alguien quiere ayudar o no. Pudiste haber contestado simplemente que no podias... Al perecer tienes un problema con las "Buenas Personas" como yo?
  10. Hola @sretamalb, prueba el adjunto, el código tiene algunas indicaciones que espero puedas analizar . El archivo Txt se genera donde tengas guardado el archivo de excel con el nombre "Archivo.txt", esto lo puedes cambiar desde el código por el que gustes. Comentas, saludos. EXCEL.xlsm
  11. @nickmartinez, sucede lo siguiente, cuando cargas el formulario primero ejecutas un procedimiento para ingresar los encabezados de las columnas en el listbox, esos encabezados son básicamente el problema ya que en esta línea For I = 0 To .ListCount - 1, al iniciar desde la fila 0 estas ingresando el encabezado, la columna ID solo admite números pero le estas ingresando la palabra "ID". Para solucionar esto solo debes modificar la línea así: For I = 1 To .ListCount - 1 , con esto vamos a saltarnos los encabezados. Por otra parte si vas a manejar los datos directamente en la hoja de excel no veo necesidad de utilizar SQL (dadas sus limitaciones con respecto a Access o SQL Server), por ejemplo puedes sustituir ese código por este: Private Sub SQL_Registrar() Dim ult#, I# With Sheets("Productos") For I = 1 To Lista.ListCount - 1 ult = .Range("A" & .Rows.Count).End(xlUp).Row + 1 .Cells(ult, "A") = Lista.List(I, 0) .Cells(ult, "B") = Lista.List(I, 1) .Cells(ult, "C") = Lista.List(I, 2) .Cells(ult, "D") = Lista.List(I, 3) .Cells(ult, "E") = Lista.List(I, 4) .Cells(ult, "F") = ComboBox1.List(ComboBox1.ListIndex, 0) .Cells(ult, "G") = ComboBox2.List(ComboBox2.ListIndex, 0) .Cells(ult, "H") = Lista.List(I, 7) .Cells(ult, "I") = Lista.List(I, 8) Next End With End Sub Yo utilizaria SQL solo para realizar consultas, para agregar o modificar datos utilizaria el código nativo de VBA. Saludos.
  12. Hola @nickmartinez, cual es el mensaje de error que se genera, hay varias posibilidades. Una de ellas es esta : Este error resulta de la mala apertura de la conexión a la base de datos, puedes intentar cambiar Rs.Open Sql, Cnn, 1, 1 por Rs.Open sql, Cnn, 3, 3, adCmdText Tambien puede que estes ingresando texto en un campo numerico, tu código esta bien escrito (solo me queda la duda con las columnas MEDIDA y CATEGORIA), por lo que puede que el error sea de formato o bien lo que indique mas arriba. Saludos.
  13. Hola @Haplox, en esos casos yo utilizo el control Frame para crear grupos de controles y despues recorrer los mismos mas facilmente. Por ejemplo a la hora de crear un control lo coloco dentro de un frame Me.Frame1.Controls.Add("Forms.TextBox.1", "txtEjemplo") Y para recorrer los controles dentro de Frame algo así: For Eah Ctrl In Me.Frame1.Controls Next Saludos a todos.
  14. Hola @Antoni, yo lo haria utilizando variables en la misma formula. Saludos Ejemplo Fórmula.xlsm
  15. Hola @chilaquil, revisa el código que te dejo, debes tener activa la referencia "Microsoft ActiveX Data Objects 6.1 Library", esto para que funcione el código. La Base de Datos debe estar en la misma carpeta que el archivo excel. Public Sub Exportar_Access() Set cn = CreateObject("ADODB.Connection") dbPath = Application.ActiveWorkbook.Path & "\Base de datos11.accdb" dbWb = Application.ActiveWorkbook.FullName dbWs = Application.ActiveSheet.Name scn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath dsh = "[" & Application.ActiveSheet.Name & "$]" cn.Open scn ssql = "DELETE FROM uno": cn.Execute ssql ssql = "INSERT INTO uno([Reg_Patr], [Num_Afil], [Tip_movs], [Fec_Inic], [Fec_Fin], [Fol_Inc]) " ssql = ssql & "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh cn.Execute ssql End Sub Comentas. Saludos
  16. Hola @paikerr, no veo necesario usar macros para esto. Si seleccionas la celda donde esta la fecha -> click derecho -> Formato de Celdas -> Personalizada, y colocas por ejemplo en el cuadro "tipo" lo siguiente : [$-040C]dddd mmmm yyy Crearas un formato de fecha personalizado donde [$-040C] indica el idioma Frances y dddd mmmm yyy el día mes y año en formato largo. [$-0410] Italiano [$-040C] Frances [$-0409] Ingles (U.S.) Otro Ejemplo: Comentas, saludos.
  17. Hola, parecido a la de Leopoldo, igualmente seleccionando el rango de celdas antes. Sub separar() Dim tx As Variant, celda As Range For Each celda In Selection tx = Split(celda, " ") Cells(celda.Row, celda.Column + 1).Resize(1, UBound(tx) + 1) = tx Next End Sub Saludos.
  18. Hola @joselopezitot tal como lo indica Héctor, excel no tiene forma de detectar un cambio en un formato, pero podemos valernos de algunos trucos como en tu caso donde insertas las sangrías con los botones de la cinta de opciones de excel. Este truco funciona utilizando el "Custom IU Editor", lo que haremos es interceptar el evento al presionar los botones para insertar o eliminar las sangrías para que ejecuten una macro y podamos re-calcular la hoja al presionar uno de estos 2 botones. Adjunto el ejemplo, me comentas. Saludos. Copia de SANGRÍA.xlsm
  19. Hola @Pirtrafilla, te recomiendo leer un poco sobre lo básico de las consultas en SQL, puesto que si quieres trabajar con access utilizando ADO tendrás que utilizar SQL. Por el momento tomando en cuenta que no se la estructura de tu tabla "Tab_Procedimientos" , te dejo este código: Sub Prueba() Set rs = CreateObject("ADODB.Recordset") 'Indicamos en la consulta SQL, donde buscaremos en la columna "TuColumna" el valor del Textbox2 Sql = "Select * From Tab_Procedimientos where TuColumna =' & Texbox2 &'" 'Abrimos la conexión rs.Open Sql, Cnn, 3, 3, adCmdText 'Comprobamos si existe un registro If rs.EOF = False Then MsgBox "Existe" Else MsgBox "No Existe" End If 'cerramos la conexión rs.Close End Sub Ademas te dejo un pequeño ejemplo básico que había hecho para otro usuario con conexiones a Access, debes tener los dos archivos en la misma carpeta. Saludos. Ejemplo ADO.rar
  20. Hola @JSDJSD, modifica esta linea: Private Sub CommandButton3_Click() Dim Comentario As String For X = 0 To ListBox2.ListCount - 1 If ListBox2.Selected(X) Then Hoja2.Range("H" & ListBox2.List(X, 3)) = TextBox5.Value If TextBox4 <> "" Then Let Comentario = TextBox4.Value On Error Resume Next With Hoja2.Range("B" & ListBox2.List(X, 3)) .AddComment .Comment.Visible = False .Comment.Text Text:=Comentario End With End If End If Next CargarFacturas End Sub Y agrega estas nuevas: Private Sub ListBox2_Click() Dim comt As Range With Me.ListBox2 Set comt = Hoja2.Range("J:J").Find(.List(.ListIndex, 0), , , xlWhole) On Error Resume Next If Not comt Is Nothing Then Me.TextBox4 = Hoja2.Cells(comt.Row, "B").Comment.Text End With End Sub Comentas. Saludos.
  21. Hola @Haplox, se refiere a la galería de iconos integrados en Microsoft Office, los llamados imageMSO . Saludos.
  22. Hola @LAAM, en el siguiente link aparece una lista con sus respectivas imágenes. https://bert-toolkit.com/imagemso-list.html Saludos.
  23. Hola @Alex Razo, en un principio debería bastar con: Sub FiltrarEmpresa() criterio1 = [M2] criterio2 = [N2] With Range("A1:E1") If criterio1 = "" And criterio2 = "" Then .AutoFilter Else .AutoFilter Field:=3, Criteria1:=criterio1, Operator:=xlOr, Criteria2:=criterio2 End If Range("A1").Select End With End Sub Si no es lo que necesitas adjunta un archivo de ejemplo. Saludos.
  24. Hola @juanmafdez, puedes probar con este código suponiendo que la fecha esta en la celda A1. Sub separar() Dim FechayHora FechayHora = Range("A5") Range("B1:C1") = Array(CDate(Split(FechayHora, " ")(0)), Mid(FechayHora, InStr(FechayHora, " "))) End Sub Prueba y comentas. Saludos.
×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png