Jump to content

avalencia

Moderators
  • Content Count

    1,367
  • Joined

  • Last visited

  • Days Won

    76

Everything posted by avalencia

  1. Y habiendo tantas cosas en tu archivo ¿Quieres que revisemos todo para intentar ver a qué te refieres?
  2. Hola No, no es posible cambiar ese color a través de VBA.
  3. Hola Tu Office es de 64 bits y en el archivo de ejemplo enviado hay varias funciones de la API de Windows que hay que modificar en las declaraciones. Modifica toda la parte que está entre la línea #If VBA7 Then y la línea #Else reemplazando por las siguientes: Private Declare PtrSafe Function SetCurrentDirectoryA Lib "kernel32" (ByVal lpPathName As String) As Long Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As Long Private Declare PtrSafe Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPtr Private Declare PtrSafe Function TerminateProcess Lib "kernel32" (ByVal hProcess As LongPtr, ByVal uExitCode As Long) As Long Private Declare PtrSafe Function CloseHandle Lib "kernel32" (ByVal hObject As LongPtr) As Long Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr Private Declare PtrSafe Function CallNextHookEx Lib "user32" (ByVal hHook As LongPtr, ByVal ncode As Long, ByVal wParam As LongPtr, lParam As LongPtr) As LongPtr Private Declare PtrSafe Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As LongPtr Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As LongPtr) As Long Private Declare PtrSafe Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" (ByVal hDlg As LongPtr, ByVal nIDDlgItem As Long, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr Private Declare PtrSafe Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As LongPtr, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Declare PtrSafe Function GetCurrentThreadId Lib "kernel32" () As Long Yo prefiero usar Public, pero lo dejo en Private como te lo han mostrado. Saludos.
  4. Hola, dada la configuración de tus datos, lo ideal es que uses lo siguiente: Sub f_Actualizar_7() Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim Sql As String, Datos As Variant Dim NumId As Date, numih As Date NumId = Format(Range("D3").Value, "mm/dd/yyyy") numih = Format(Range("F3").Value, "mm/dd/yyyy hh:mm:ss") Set Cnn = New ADODB.Connection With Cnn .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\Registro.accdb" .Open End With Set Rs = New ADODB.Recordset Sql = "SELECT nombre, cedula, riesgo, Nombre_Patrono, fecha1 FROM f_adeudos WHERE fecha1 Between #" & NumId & "# and #" & numih & "# ORDER BY fecha1" Rs.Open Sql, Cnn Sheets("usuarioF7").Select Range("B7:E100").ClearContents Range("B7").CopyFromRecordset Rs Rs.Close Cnn.Close Set Rs = Nothing Set cn = Nothing End Sub Ojo que necesariamente debes tener algo así en F3: 29/05/2020 23:59:00 Saludos.
  5. En tu Hoja2 tienes valores como 10122 que se repite y cuya fila inmediata superior las diferencias, pero en Sheet1 no ¿Cómo diferenciarlas? Sobre todo dado que en Sheet1 solo hay espacio para una coincidencia. Por cierto, tu disposición de datos solo irá complicándote la vida, debes tener lo de la Hoja2 tipo base de datos.
  6. Hola Para registros entre fechas debes usar "Between", algo así: Sql = "SELECT nombre, cedula, riesgo, Nombre_Patrono, fecha1 FROM f_adeudos WHERE fecha Between '" & NumId & "' and fecha '" & NumIh & "' ORDER BY fecha1" Ojo, digo "algo así" ya que no tengo tus datos para probar y en realidad lo de las fechas tiene algunos detalles relacionados a la configuración regional y a los formato y tipos de datos. Prueba y comentas.
  7. Hola No pones al menos un ejemplo de tus datos, qué resultados espera y cómo lo has intentado hasta ahora. Igual, dale una leídita al uso de For - Each en lugar de For - Next.
  8. Hola ¿Esa imagen es tuya o la viste "por ahí"? En Excel, y en informática en general, una imagen NO vale más que mil palabras. Igual ve probando con proteger el libro y la o las hojas que en parte logran lo que se ve ahí de deshabilitar las opciones de la Cinta. Del mismo modo en la pestaña "Vista" puedes quitar la barra de fórmulas y otras cosas. Saludos.
  9. Hola nuevamente Hay dos formas de hacerlo, una es usando el objeto MSXML2.XMLHTTP60 (o uno similar), la ventaja es que es relativamente rápido, y sus desventajas son la dificultad (para muchos) de entenderlo/programarlo y que no necesariamente funciona con todas las web. La segunda alternativa es usar el objeto Internet Explorer, su desventaja es que es más lento pero sus ventajas es que es más fácil de entender y que funciona con casi todas las webs. Sobre el segundo método, lee estos artículos: https://abrahamexcel.blogspot.com/search?q=interactuando+con+internet Saludos
  10. Hola, bienvenido. Si deseas ayuda debes dar más detalles y de preferencia, con más datos de los que envías, colocar en algún lado el resultado "a mano" y en base a qué datos lo has obtenido para de ese modo entenderte mejor y que recibas la ayuda que necesitas. Saludos.
  11. Como ya dije, usas Execute, debes usar el método Open (que sí usas en otra de tus macros) con Execute no funciona pues dicho método no tiene la propiedad RecordCount. Como vi que usas el método Open en otra macro, asumí que sabías a qué me refería. Es el qué usas en tu macro "consultar". A ver, algo así, ojo que lo estoy haciendo de memoria, no copies/pegues que, además de ser una mala costumbre, no hace que aprendas. Lo más importante es que entiendas la lógica de lo que te voy a enviar, verás que no es tan complicado si ya te metiste al mundo del ADO como haces en tu archivo. Obvio modifica de ser necesario. Set Cnn = New ADODB.Connection With Cnn .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\Datos\01.Adeudos.accdb" .Open End With Set Rs = New ADODB.Recordset Sql = "Select [Num Id] From pen Where [Num Id] =" & Worksheets("Registro").Range("C9").Value With Rs .CursorLocation = adUseClient .CursorType = adOpenKeyset .LockType = adLockOptimistic .Open Sql, Cnn, , , adCmdText End With If Rs.RecordCount >= 1 Then MsgBox "Ya existe el ID, modifique" Exit Sub End If Sql = "INSERT INTO pen ([Num Id], Nombre, Riesgo, [Monto Caso], Moroso, [Nun_Patrono], [Nom_Patrono]) " Sql = Sql & "VALUES ('" & Worksheets("Registro").Range("C9").Value & "', " & _ "'" & Worksheets("Registro").Range("C11").Value & "', " & _ "'" & Worksheets("Registro").Range("E9").Value & "', " & _ "'" & Worksheets("Registro").Range("G9").Value & "', " & _ "'" & Worksheets("Registro").Range("G11").Value & "', " & _ "'" & Worksheets("Registro").Range("C13").Value & "', " & _ "'" & Worksheets("Registro").Range("E13").Value & "' )" With Rs .CursorLocation = adUseClient .CursorType = adOpenKeyset .LockType = adLockOptimistic .Open Sql, Cnn, , , adCmdText End With
  12. Hola Sugiero usar el buscador del foro y colocar "web scraping" y vas viendo con paciencia cada post y sus respuestas. Saludos.
  13. Hola Si mal no recuerdo has hecho varias preguntas para interactuar desde Excel con Word y por ende se supone que debes ya al menos tener la idea de como se trabaja con un objeto Word en VBA, pues ya que ahora solicitas lo contrario, básicamente lo que desde hacer es trabajar con un objeto Excel. Obvio hay varias formas. Dim MiExcel As Object Set MiExcel = CreateObject("excel.application")
  14. Hola Como consejo, deshabilita lo innecesario del evento Open del libro cuando envíes tu archivo para consultas. Sé que a muchos les gusta sentir que Excel es un sistema propio, pero al ponerle esas cosas solo demoran más la ayuda que pueden recibir. Yendo al punto, una solución es hacer un Select de la tabla y el campo ID basado en lo que tienes en la celda correspondiente, algo así: sql = "Select [Num Id] From pem Where [Num Id] =" & Worksheets("Registro").Range("C9").Value Si existe, el RecordSet tendrá al menos un registro, por ende si tiene cero (0) no existe. OJO, no uses Execute para ese caso, necesariamente usa Open, ya que el primero método no tiene propiedad RecordCount. If rs.RecordCount = 0 Then O si quieres saber si sí encontró registros, pues: If rst.RecordCount >= 1 Then Saludos.
  15. Hola Quizás si das detalles e indicas la web recibirás ayuda. Saludos
  16. Si quieres tus propios ejecutables y administrar/usar bases de datos, sí VB.Net; otra opción es C#. Ah bueno, si estás loco por la programación como yo, aprende C++ jejeje. Para cualquiera de los tres, descárgate Visual Studio, las ediciones Community de Microsoft son gratuitas. Saludos.
  17. Hola, como ya te han comentado, no se puede evitar ver la presentación propia de Excel, no hay forma de evitarla así se usen macros o cualquier evento del archivo, claro, dependiendo del tamaño del archivo y/o las características de la PC y/o lo que tengas en tu evento Open, se verá menos o más tiempo. Para terminar, por más que actives tu Userform a través del evento Open y quites la visibilidad del Excel, igual se verá la dichosa presentación, y no, tampoco hay forma de mostrar directamente el Userform ¿Por qué? Excel es una hoja de cálculo, no es un Entorno de Desarrollo Integrado (IDE) con el que se crea software propio, el VBA es parte de Excel, no se puede compilar aparte, si quieres algo propio, necesariamente tienes que recurrir a Visual.Net, C++, C, C#, etc. Saludos.
  18. Hola Claro que se puede hacer ambas cosas, no recibes respuesta porque no has hecho preguntas puntuales y no necesariamente en los foros la gente tiene tiempo de hacer todo un desarrollo (algunos lo tienen a veces). Como para que vayas intentando, la clave está en las sentencias SQL que debes usar. Mira el ejemplo 8 de mi blog: https://abrahamexcel.blogspot.com/ Saludos
  19. ¿Estas segura que en esa línea ocurre el error? ¿Estás segura que es con esa macro que has mostrado?
  20. Hola La verdad, no sé los demás, pero yo no entendí nada. Sugiero tratar de ordenarte, explicar de mejor manera y sobre todo, una cosa a la vez, para que podamos entenderte y ayudarte. Saludos.
  21. Hola Lo primero es recordar que la programación es sobre todo entender qué es lo que hace cada instrucción que se usa en las macros. Sugiero que vuelvas a revisar el mismo archivo que has enviado y trates de, justamente, entender que hace cada linea y cada macro. PAra ayudarte a entender, este enlace te ayudará: http://www.cpearson.com/excel/vbe.aspx Una vez que entiendas, algo importante es que sepas que solo podrías hacer los cambios si los archivos que mencionas están en carpetas que estén "mapeadas" y a las que tengas acceso a través de la red de tu empresa. De ser el acceso por nube, intranet o internet, lamentablemente no podrás realizar los cambios requeridos. Ah, ojo, entiendo que no tengas los conocimiento sobre el tema, pero lo que pides no es una modificación a lo que envías, es el desarrollo de algo nuevo, y es complicado que en los foros se haga todo eso ya que se ayuda de modo gratuito. Intenta avanzar algo y ya sobre esos avances se te brinda ayuda.
  22. Aunque sigues sin indicar, en específico, cómo envías el mensaje, al parecer usas "display", cuando no es necesario si quieres enviar sin cambios, usa "Send" y listo, nadie podrá borrarlo. Saludos.
  23. Hola No se entiende a qué te refieres ¿A que la persona a la que le llega el mensaje (To - Destinatario) no pueda responder evitando que en esa respuesta se evite también enviarla al mismo CC? De ser eso, pues no puedes hacer nada pues ya todo depende el destinatario y a quiénes decida responder esa persona.
  24. Hola nuevamente Borra esta línea: Set WordApp = Nothing Y modifica así esta: Wordapp.ActiveDocument.SaveAs2 Filename:=direc & "\" & nombre & ".docx", FileFormat:=wdFormatDocumentDefault Saludos
  25. Hola Como te dije en un grupo de Facebook, sugiero leer todos estos artículos y probar: https://abrahamexcel.blogspot.com/search?q=word Saludos
×
×
  • Create New...

Important Information

Privacy Policy