Jump to content

Stack A Brown

Members
  • Content Count

    42
  • Joined

  • Last visited

  • Days Won

    1

About Stack A Brown

  • Rank
    Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hola AlexanderS

    Estaba buscando un Calendario para Formularios, pero que no utilizara datepicker y encontre tu post, pero no deja descargar el archivo, hay alguna manera de poder obtener tu aporte?

    Encontre otro aporte parecido, pero hay que colocar muchas lineas para obtener el mismo resultado que el tuyo que utiliza solo una linea.


    Saludos,

    1. AlexanderS

      AlexanderS

      Que tal, te respondo en privado. Saludos

  2. Muy bien, gracias, lo voy a probar y te comento. Saludos!
  3. Buenos Dias, Comentandoles, que tengo un archivo con Macros el cual lo pase como Complemento Add-In que contiene 2 procedimientos este disponible en cualquier Excel que se abra, esto es, porque para el procedimiento 1 que es la conversion de Listas de Materiales (BOM) sea mas sencilla para el usuario y que no este teniendo que abrir el archivo de macros para ejecutar la conversion, pero porque? Bueno, el BOM se genera desde un ERP Epicor en un archivo de Excel simple, pero no esta formateado, la macro lo que hace es, crear una nueva hoja en ese libro con la informacion del BOM, y complementa las descripciones de los productos que quedaron truncadas en el reporte, abriendo automaticamente un archivo que contiene el Maestro de Partes, hasta aqui no hay problema, el Complemento funciona perfecto! El procedimiento 2 consta de 3 funciones, la primera es, cuando capturan un nuevo numero de parte en la nueva hoja, al presionar un atajo, lanza una busqueda de este numero de parte en el Master de Partes y trae la descripcion y unidad de medida, esto para evitar el error al teclear la descripcion y ahorrar tiempo. La segunda funcion es, si colocan un signo ? en el numero de parte (Ejem. PTCN-?), se lanzara un formulario de busqueda y en el muestra todos los numeros de parte que coincidan con el codigo a buscar, donde seleccionaran el deseado y regresara la informacion a la hoja, tambien aqui funciona perfecto. El problema viene cuando el numero de parte capturado, No Existe en el Maestro de Partes, aqui se lanza de igual forma un formulario tipo configurador, donde el formulario contiene listas de validacion que se utilizan en combos dentro del formulario, esta informacion esta en la hoja1 que esta dentro del complemento, ya que tanto el archivo del BOM como el Maestro de Partes, no contienen macros y no pueden tener dichas listas ya que, estos archivos se generan desde el ERP y es pura informacion plana, ademas que se puede actualizar en cualquier momento y habria que estar pasando tooodas las listas de nuevo. El producto se compone de esta forma (PTCN-0000) donde PT es la familia y el combo se llena de una lista de familias, CN es el Grupo, de igual manera, esta se llena de acuerdo a un filtro de los grupos que pertenecen a dicha familia, 0000 es un consecutivo para esa familia-grupo, el cual lo trae de un filtro que se realiza en el Maestro de Partes y nos trae el ultimo numero de parte y le agrega un 1 para que nos de el siguiente, todo bien hasta aqui, el problema viene cuando ya se va a capturar los demas campos del producto que contienen combos como lo son, Clase ID, Unidad Medida, Clase de Parte, etc. estos combos me aparecen vacios y no se llenan. Utilizo ThisWorkbook.activate para activar la hoja dentro del complemento y en Hoja1 es donde estan todas las listas , pero solo me aparecen los datos de Familia y Grupo, las demas aparecen en blanco. Private Sub UserForm_Initialize() Dim xArc As String ThisWorkbook.Activate Hoja1.Range("A2:B132").Name = "Familia" Hoja1.Range("$BS$2:$BT$4").Name = "TProd" Hoja1.Range("$S$2:$T$5").Name = "uNegocio" Hoja1.Range("$AA$2:$AB$108").Name = "ProdClas" Hoja1.Range("$AJ$2:$AO$3").Name = "uomArea" Hoja1.Range("$AE$2:$AH$6").Name = "uomClass" Hoja1.Range("$AQ$2:$AV$4").Name = "uomLongitud" Hoja1.Range("$AX$2:$BC$3").Name = "uomPeso" Hoja1.Range("$BE$2:$BJ$5").Name = "uomUnidad" Hoja1.Range("$BL$2:$BQ$5").Name = "uomVolumen" Hoja1.Range("$W$2:$X$180").Name = "ClaseID" 'ThisWorkbook.Sheets("Hoja1").Range("A2:B132").Name = "Familias" Me.cboFamilia.RowSource = "Familia" xPth = "\\epicor\genpart\" xFil = "PartesEpicor.xlsx" xArc = xPth & xFil If IsFileOpen(xArc) Then Else Workbooks.Open xArc 'Windows("Configurador Partes Epicor.xlsm").Activate End If Windows(xFil).Activate PEp = "Sheet1" 'ActiveSheet.Name crh = CrearHoja("FiltroPartes") If crh = True Then ' Existe Else ' No Existe Nombres ("FiltroPartes") End If nmhFP = "FiltroPartes" Sheets(PEp).Activate Application.ScreenUpdating = False Me.ListBox1.RowSource = "" 'Familia 'Grupo End Sub En esta parte vuelvo a llenar el de Unidad de Medida, pero no me trae nada Private Sub cmbUOMClass_Change() xUOM = Me.cmbUOMClass.Value yUOM = "uom" & xUOM If xUOM = "" Then Me.cmbVentas.RowSource = "" Me.cmbInventario.RowSource = "" Me.cmbCompras.RowSource = "" Me.cmbVentas.Value = "" Me.cmbInventario.Value = "" Me.cmbCompras.Value = "" Else Me.cmbVentas.Value = "" Me.cmbInventario.Value = "" Me.cmbCompras.Value = "" ThisWorkbook.Activate Hoja1.Range("$BE$2:$BJ$5").Name = "uomUnidad" Me.cmbVentas.RowSource = yUOM Me.cmbVentas.Value = Me.cmbUOMClass.Column(3) Me.cmbInventario.RowSource = yUOM Me.cmbInventario.Value = Me.cmbUOMClass.Column(3) Me.cmbCompras.RowSource = yUOM Me.cmbCompras.Value = Me.cmbUOMClass.Column(3) End If End Sub Desgraciadamente no he encontrado mucha informacion para trabajar con complementos y aqui es donde estoy atorado. Si alguien conoce algo respecto, y pudiera ayudarme, se los agradeceria. Saludos, Jose Segundo
  4. Haplox te comento, elimine la linea como me dijiete, pero ahora lo marca en la linea donde manda a desplegar la Pagina WebBrowser1.Navigate (sFile) Por lo que opte por crear un formulario como VistaPrevia y con eso se eliminaron los problemas El boton Vista Previa quedo como sigue Private Sub cmdVistaPrevia_Click() cTitulo = Me.txtTitulo.Value cContenido1 = Me.txtParrafo1.Value cContenido2 = Me.txtParrafo2.Value If cTitulo = "" Or cContenido1 = "" Or cContenido2 = "" Then MsgBox "Falta Informacion en cualquiera de los 3 campos", vbCritical, "Error" Me.txtTitulo.SetFocus Exit Sub End If Pweb = "" pwPME3 Dim oFile As String oFile = "C:\TEMP\ArchivoHTML.html" Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(oFile) Then Kill (oFile) End If Open oFile For Output As #2 Print #2, Pweb Close #2 Open oFile For Input As #2 TextBox1.Text = "" While Not EOF(2) Line Input #2, readLine TextBox1.Text = TextBox1.Text + readLine Wend Close #2 frmVistaPrevia.WebBrowser1.Navigate ("C:\temp\WindowsTempHTMLEditor.html") frmVistaPrevia.Show End Sub En el objeto textbox quedo de esta forma, elimine todo lo referente al WebBrowser Private Sub TextBox1_Change() Dim sFile As String sFile = "C:\temp\WindowsTempHTMLEditor.html" Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(sFile) Then Kill (sFile) End If Open "C:\temp\WindowsTempHTMLEditor.html" For Output As #1 Print #1, TextBox1.Text Close #1 End Sub Subo el archivo por si a alguien le interesa y le pueda servir, esto lo voy a utilizar para enviar correos electronicos. Doy por cerrrado este Tema Prueba Correo.xlsm
  5. Muy bien, lo voy a probar y te cuento, muchas gracias!
  6. Lo que también podías hacer es un filtro avanzado y que al darse las condiciones el resultado lo copié a la otra hoja y así te ahorras listbox. Saludos
  7. De perdido, deberias de crear un esquematico de como es seria el flujo de la informacion entre las tablas, como estaria la relacion entre las mismas para darse uno cuenta de como se podria atacar el problema, y no hacer las cosas al vuelo o a como se te va ocurriendo. si ya tienes el esquematico, subelo como imagen para darnos una idea de lo que pretendes. Saludos,
  8. A mi me gusta mas el ListView porque tienes mas control sobre las columnas, formatos, etc. a parte cuando ya ejecutas el forumlario, si una columna no es del tamaño adecuado y necesitas ver mas ancho, la puedes ampliar como en excel, pero es solo en la ejecucion del formulario. Lo malo es que dependes que tu cliente tenga instalado los OCX requeridos porque no viene por default.
  9. En un ListView es mas facil agregar los Headers o Cabeceras de los campos, pero requieres tener instalado mscomctl.ocx en la maquina donde vas a ejecutar el Excel. En un Listbox creo solo se colocan cuando viene de un RowSource y tienes ColumHeaders = true Lo otro es que en el formulario coloques una Etiqueta con todos los campos, pero estos no serian dinamicos, al moverte hacia la derecha si es que tus datos no caben en la pantalla del form. O si algun Experto tiene alguna otra opinion...
  10. Pues los puedes poner en una variable o directamente desde el objeto textbox 'Variables dim xPara as string, xAsunto as string, xCuerpo as string xPara = me.txtTo.value ' textBox1.value si es el campo TO xAsunto = me.txtSubject.value 'textbox2.value si es el campo Subject xCuerpo = me.txtBody.value 'textbox3.value si es el campo Body 'Para asignarlo desde variables .to = xPara .subject = xAsunto .body = xCuerpo 'Para asignarlo desde objectos .to = me.textbox1.value .subject = me.textbox2.value .body = me.textbox3.value Me imagino que ya tienes la rutina
  11. Muchas Gracias Haplox, ese era el Problema. pero ahora me marca error en el WebBrowser1.Navigation al regresarme para cambiar algun dato y volver a realizar la vista previa, se supone que limpia el navegador, pero al parecer le hace falta otra instruccion o no se.
  12. Hola Haplo, Pense que al estar en el evento bloqueaba solo el boton en el que estaba, asi como cuando programo en VFP al colocar this.enabled = false. Gracias por la observacion, lo voy a probar y les cuento. Saludos
  13. Buenas Tardes Masters, May the 4th Be With You! Estoy haciendo un formulario donde se capturan 3 textbox y se envian a una macro que tiene un template de pagina html. Hasta aqui todo bien, al rellenar los campos y presionar el boton Vista Previa, me muestra en la pestaña de Vista Previa la pagina generada, ok! Al momento de terminar de cargar la pagina y visualizarla en el navegador integrado se cuelga y no deja presionar ningun boton, tengo que entrar al depurador y detener la macro. El boton Vista Previa Private Sub cmdVistaPrevia_Click() cTitulo = Me.txtTitulo.Value cContenido1 = Me.txtParrafo1.Value cContenido2 = Me.txtParrafo2.Value If cTitulo = "" Or cContenido1 = "" Or cContenido2 = "" Then MsgBox "Falta Informacion en cualquiera de los 3 campos", vbCritical, "Error" Me.txtTitulo.SetFocus Exit Sub End If 'A la variable Pweb se le carga todo el codigo HTML Pweb = "" 'En esta subrutina se genera el codigo HTML pwPME3 'Archivo temporal que contendra el codigo HTML generado Dim oFile As String oFile = "C:\TEMP\ArchivoHTML.html" Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(oFile) Then 'Si existe el archivo, se borra Kill (oFile) End If 'Se guarda el archivo temporal con la pagina HTML Open oFile For Output As #2 Print #2, Pweb Close #2 Open oFile For Input As #2 'en el objeto TextBox1 se carga todo el archivo HTML TextBox1.Text = "" While Not EOF(2) Line Input #2, readLine TextBox1.Text = TextBox1.Text + readLine Wend Close #2 'Una vez que se termina de cargar, se habilita la pagina 1 del MultiPage y se muestra la pagina generada Me.MultiPage1.Pages(1).Enabled = True Me.MultiPage1.Value = 1 Me.Enabled = False End Sub en el evento Change del TextBox1 esta la siguiente rutina donde en el objeto WebBrowser se carga el archivo temporal, aqui estuve aplicando varias rutinas que encontre en internet pero que de igual forma se bloquea la macro Private Sub TextBox1_Change() Dim sFile As String sFile = "C:\temp\WindowsTempHTMLEditor.html" Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(sFile) Then Kill (sFile) 'Workbooks.Open Filename:=Archivo End If Open "C:\temp\WindowsTempHTMLEditor.html" For Output As #1 Print #1, TextBox1.Text Close #1 ' ''PauseTime = 30 ' Set duration to wait in seconds. ''Start = Timer ' Set start time. WebBrowser1.Navigate ("about:blank") ''Do ' While Timer < Start + PauseTime '' DoEvents ' allow other processes to work (the browser to have time to load the webpage) ''Loop Until WebBrowser1.ReadyState = READYSTATE_COMPLETE Or Timer > Start + PauseTime ' WebBrowser1.Visible = False 'WebBrowser1.Hide() ''' Do Until WebBrowser1.ReadyState = READYSTATE_COMPLETE 'WebBrowserReadyState.Complete ''' DoEvents 'Application.Wait (Now + #12:00:01 AM#) 'Application.Wait (Now + TimeValue("0:00:01")) ' Sleep (1000) ' System.Threading.Thread.Sleep (100) ''' Loop WebBrowser1.Navigate (sFile) WebBrowser1.Visible = True 'WebBrowser1.Show() WebBrowser1.Navigate ("C:\temp\WindowsTempHTMLEditor.html") 'WebBrowser1.Refresh2 End Sub Despues de todo esto, queda bloqueado el archivo. Adjunto el archivo para ver si alguien tiene alguna respuesta al porque del bloqueo, de antemano, les agradezco la ayuda prestada. Saludos, Prueba Correo.xlsm
  14. Bueno, ya lo solucione, encontre informacion en una pagina francesa, aqui les dejo la solucion y con esto doy por cerrado el tema. En el evento Click del Listview, tomo el valor del indice del renglon Private Sub ListView1_Click() treg = 1 ' En la variable xjs tomo el valor del Indice del registro xjs = Me.ListView1.SelectedItem.Index Me.cmbArow1.Text = ListView1.SelectedItem For j = 2 To 6 Me("arow" & j).Text = ListView1.SelectedItem.SubItems(j - 1) Next Me.MultiPage2.Pages(0).Enabled = False Me.MultiPage2.Pages(1).Enabled = True Me.MultiPage2.Value = 1 'Me.cmbArow1.Enabled = False Me.arow2.SetFocus End Sub Despues en el boton Guardar de la Modificacion del Registro, utilizo el valor del indice para actualizar el registro Private Sub cmdGrabReg_Click() x = 0 If Me.arow6 = 0 Then Else If treg = 0 Then ' treg = 0, porque es un registro nuevo xValc = Me.cmbArow1.Value ' Me.arow1.Value Set Item = ListView1.ListItems.Add(Text:=xValc) Item.SubItems(1) = Format(Me.arow2.Value, "#,###,##0") Item.SubItems(2) = Format(Me.arow3.Value, "#,###,##0.00") Item.SubItems(3) = Format(Me.arow4.Value, "#,###,##0.00") Item.SubItems(4) = Format(Me.arow5.Value, "#,###,##0.00") Item.SubItems(5) = Format(Me.arow6.Value, "#,###,##0.00") Else x = 0 ' treg es 1 porque en el evento Click del ListView se asigno por ser una actualizacion del registro ' Aqui, como la variable treg=1, indica que es una modificacion del registro ' en el ListView tomamos el valor del Indice xjs y actualizamos xValc = Me.cmbArow1.Value ' Me.arow1.Value With Me.ListView1 .ListItems(xjs).Text = xValc .ListItems(xjs).ListSubItems(1).Text = Format(Me.arow2.Value, "#,###,##0") .ListItems(xjs).ListSubItems(2).Text = Format(Me.arow3.Value, "#,###,##0.00") .ListItems(xjs).ListSubItems(3).Text = Format(Me.arow4.Value, "#,###,##0.00") .ListItems(xjs).ListSubItems(4).Text = Format(Me.arow5.Value, "#,###,##0.00") .ListItems(xjs).ListSubItems(5).Text = Format(Me.arow6.Value, "#,###,##0.00") End With End If End If Me.MultiPage2.Pages(0).Enabled = True Me.MultiPage2.Pages(1).Enabled = False Me.MultiPage2.Value = 0 End Sub Favor de Cerrar el Tema
  15. En otro programa, tengo un form con un ListView en el cual se dan de alta varios registros, en otro Form con los mismos datos, pero para actualizar sus datos, jalo la info grabada y lo cargo en el ListView. Lo que quiero hacer es poder modificar cualquier registro que este cargado en el ListView, pero no me funcionan o no tengo las formulas adecuadas para tal caso. En la captura T1.PNG se ve el listado con los regisros capturados, al presionar el boton Nuevo registro, me deja perfectamente adicionar un registro y lo agrega al ListView, pero al seleccionar un Registro, me deja Capturar la Modificacion, pero al querer Actualizarlo, em agrega otro registro. Boton Nuevo Registro Seleccion Registro en ListView Boton Grabar o Actualizar registro cuando treg = 1 es una actualizacion de registro y debe actualizar los datos del ListView para el Registro seleccionado Si tienen alguna experiencia con este Control y puedan compartirla, se los agradecere mucho! Saludos, P.D. he tratado de subir el archivo adjunto comprimido en zip, son 280kb y me marca error
×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 6254 personas - Aprender Excel - Total: 4.7 / 5