Jump to content

AlexanderS

Moderators
  • Posts

    1,397
  • Joined

  • Last visited

  • Days Won

    58

Everything posted by AlexanderS

  1. Hola @patriciomates y demás compañeros! Prueba sustituir esta parte del código: cn.ConnectionString = "DRIVER={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & ThisWorkbook.Path & "\" & "ConsultaSQL.xlsm" cn.Open Por esta: cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\" & "ConsultaSQL.xlsm" _ & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";" Adjunto por si acaso. Saludos a todos!! ConsultaSQL.xlsm
  2. Hola @pinoji, no hace nada porque colocaste la instrucción en el evento Change del mismo label,o sea no hace nada porque el evento nunca llega a activarse. Coloca la instrucción el evento CHANGE() de los 2 textbox TxtCantidad y TxtPrecio. Saludos.
  3. Lo mas recomendable ya que lleva un bucle es que lo ejecutes manualmente cuando realices algún cambio. Saludos.
  4. Hola @Galactico, algo asÍ?: Saludos. Muestra tamaño Letra.xlsm
  5. Hola @paikerr, prueba así: Private Sub Worksheet_Activate() Const HOJA As String = "CALENDARIO" Const TABLA As String = "CALENDARIO" Dim tbl As Object On Error Resume Next Set tbla = ActiveSheet.ListObjects(TABLA) If tbla Is Nothing Then ActiveSheet.ListObjects.Add(xlSrcRange, Sheets(HOJA).Cells(1, 1).CurrentRegion, , xlYes).Name = TABLA MsgBox "La tabla se ha creado con éxito dentro de la " & HOJA & "." Else MsgBox "La tabla ya existe dentro de la " & HOJA & "." End If End Sub Saludos
  6. Correcto, pero entonces lo mejor en tu caso borrar toda la lista de archivos de la columna y volver a escribirla seria lo mejor. Sub DoFolder(Folder) Range([B2], [A2].End(xlDown)).Clear .... Saludos
  7. Debemos tener alguna condición para diferenciar que es una categoría y que no, en tu caso veo que las categorías no tienen un código numérico al inicio y los datos si, con esa condición se puede generar el cambio automático. Saludos mrzo-bdd.xlsm
  8. Prueba así: Sub DoFolder(Folder) Dim SubFolder For Each SubFolder In Folder.SubFolders DoFolder SubFolder Next i = Cells(Rows.Count, 1).End(xlUp).Row + 1 Dim file For Each file In Folder.Files If Range("A:A").Find(file, , , xlWhole) Is Nothing Then ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), Address:= _ file.Path, TextToDisplay:=file.Path Cells(i, 2).Value = file.DateCreated i = i + 1 End If Next End Sub
  9. Debes utilizar el evento Workbook_Open(), puedes leer un poco mas acerca de este aquí: https://www.exceleinfo.com/ejecutar-macros-al-abrir-un-archivo-en-excel-con-el-evento-workbook_open/ Saludos.
  10. En un formulario coloca un control "Image" y pega este código completo: Option Explicit Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _ (ByVal pCaller As LongPtr, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As LongPtr) As Long Private Declare PtrSafe Function DeleteUrlCacheEntry Lib "Wininet.dll" Alias "DeleteUrlCacheEntryA" _ (ByVal lpszUrlName As String) As Long Private Const BINDF_GETNEWESTVERSION As Long = &H10 Private Sub CommandButton1_Click() End Sub Private Sub UserForm_Initialize() Dim imageURL As String Dim fileName As String imageURL = "https://petsbioforestal.es/wp-content/uploads/2020/05/porque-mi-conejo-estornuda.jpg" fileName = Environ("temp") & "" & Mid(imageURL, InStrRev(imageURL, "/") + 1) If DownloadFile(imageURL, fileName) Then Image1.Picture = LoadPicture(fileName) Else MsgBox "Error downloading " & imageURL End If End Sub Private Function DownloadFile(URL As String, LocalFileName As String) As Boolean Dim RetVal As Long DeleteUrlCacheEntry URL RetVal = URLDownloadToFile(0, URL, LocalFileName, BINDF_GETNEWESTVERSION, 0) DownloadFile = (RetVal = 0) End Function PD: Este código no es mío lo tome de aqui https://www.mrexcel.com/board/threads/load-url-image-into-userform.1060189/ Saludos.
  11. Hola @Villable la forma correcta en la primera Public Const n As Integer = 12 Este debe ser escrito en un modulo, no en un modulo de objeto (ThisWorkbook o Hoja1 por ejemplo). La forma de llamar la variable seria simplemente: Msgbox n O tambien Msgbox Modulo1.n Saludos.
  12. Suponiendo que las 2 celdas son A1 y A2: HostFolder = Range("A1") & Range("A2") Saludos
  13. Hola, con formatos condicionales no seria mas fácil? Saludos Formato C.xlsx
  14. Version 1.0.0

    59 downloads

    Resulta que hace unos años me tope con el problema de que en mi trabajo habían varios compañeros con un archivo con macros que yo les había pasado, pues resulta que el código del módulo tenia algunos errores o debía cambiar alguna parte del código. Esto era un problema ya que como eran varias personas tenia que ir una por una a modificar el código del modulo para actualizarlo ya que no podía enviar el archivo por correo porque cada uno tenia datos diferentes ingresados en el libro. Pero teníamos algo en común, todos estábamos en la misma red, entonces se me ocurrió el código que explico a continuación: 1. En el archivo original se debe copiar el código en el módulo "Thisworkbook". 2. Debe haber una carpeta de red a la que todos los usuarios tengan acceso (ya sea una red local o por VPN). 3.Crear una carpeta con cualquier nombre donde colocaremos los archivos de actualización. 4. Los archivos de actualización deben ser en formato .txt y el nombre del archivo debe ser el mismo que el del módulo a actualizar. 5. Dentro de los txt se debe colocar el número de versión ejemplo '1.01, con un apostrofe al inicio.(El código solo se actualiza si el número de la versión del txt es mayor que el del modulo del libro) 6. El código actualizara los módulos automáticamente y no afecta la información que este dentro del libro. Si no existe el módulo el código lo creara. El código se ejecuta automáticamente al abrir el archivo y se debe habilitar la opción de Confiar en el acceso al modelo de objetos de proyectos VBA en la configuración de Centros de Confianza -> Configuración de Macros. En el ejemplo adjunto, se debe descomprimir y abrirlo por primera vez se actualizaran los módulos, ya que la carpeta por defecto es la misma que donde se guardo el archivo. Saludos y espero sea de funcionalidad para alguien.
  15. Hola @Gerson Pineda, lo que pasa es que este archivo lo tenia para uso personal con algunas columnas mas y se me olvido corregir el rango cuando las elimine. Subo el archivo con la corrección, gracias por avisar. Saludos.
  16. Version 1.0.1

    201 downloads

    Que tal, les comparto este archivo el cual utilizo para enviar correos de Outlook desde la comodidad de Excel. Esto es de utilidad si como en mi caso necesitas enviar un mismo correo a varias personas pero con diferentes archivos adjuntos. Sin mas espero que el aporte sea de utilidad. Saludos.
  17. Corregido el error que marcaba el número de día del mes anterior o siguiente si era igual al número de día actual, gracias @aaquino por avisar. Saludos.
  18. Hola @Nicomem14, debes asegurarte de tener activo el complemento y agregarlo a las referencias desde la ventana de VBA. Saludos.
  19. Version 2.0.0

    1,483 downloads

    La contraseña del proyecto VBA es "riddle" Hola, el día de hoy voy a compartir una alternativa al control dtpicker, que seria básicamente un calendario que se instala como complemento y puede ser utilizado en cualquier formulario VBA. Los pasos serian los siguientes: 1. Descargar el complemento, es preferible que lo guardes en la carpeta por defecto para complementos de excel la cual suele estar aqui: "C:\Users\NOMBRE USUARIO\AppData\Roaming\Microsoft\Complementos", o simplemente lo guardan donde deseen. 2.Instalamos el complemento Guía para instalar complementos 3.Vamos a abrir el archivo excel donde queremos que el calendario aparezca y nos dirigiremos a la Ventana de VBA (Alt + F11), iremos a Herramientas -> Referencias, y activaremos la que dice CalendarioRiddle. 4.El calendario esta listo para ser usado, solo debemos ligarlo a un textbox, para esto crearemos un botón junto al textbox y agregaremos el siguiente código el el evento click() del CommandButton: Private Sub CommandButton1_Click() CalendarioR TextBox1 End Sub Se debe colocar la palabra "CalendarioR" seguido del nombre del textbox que guardara la fecha. El calendario por defecto empieza la semana el día Domingo, podemos cambiar esto agregando un 2 como segunda variable para que empiece por el día Lunes: Private Sub CommandButton1_Click() CalendarioR TextBox1, 2 End Sub También es posible cambiar el color del calendario (por defecto es negro) agregando como tercera variable el color deseado, por ejemplo morado: Private Sub CommandButton1_Click() CalendarioR TextBox1, 2, &H400040 End Sub Quedaría así: Para cambiar de mes dan click sobre el mes actual y seleccionan el mes deseado, para volver al día actual click sobre la leyenda del día de hoy. Pueden salir del calendario con la tecla "ESC" del teclado. Saludos y espero que sea de utilidad.
  20. Me gusto lo de navegar por las carpetas con el web browser. Saludos.
  21. Version 1.0.1

    154 downloads

    Revisando mis viejos aportes me encontré con este, que como indica el titulo es el viejo juego de NES recreado en VBA. Tal vez la mayor utilidad de este aporte (ademas de ofrecer horas de diversión ) es que todo el juego esta realizado con controles de formulario, por lo que es una buena referencia sobre como funcionan los controles de formulario y la forma en que se pueden manipular en tiempo de ejecución. Así que bueno que se diviertan!! Saludos
  22. Hola @Callao2908 y @Haplox, para la versión de Office x64 se debe agregar una pequeña instrucción al los Declare. que seria PtrSafe, esto hace compatible una instrucción de 32bits a 64bits. Básicamente tendrían que reemplazar las declaraciones del modulo "modPastePicture" para que queden de esta forma: Private Declare PtrSafe Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Integer) As LongPtr 'Open the clipboard to read Private Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hwnd As LongPtr) As LongPtr 'Get a pointer to the bitmap/metafile Private Declare PtrSafe Function GetClipboardData Lib "user32" (ByVal wFormat As Integer) As LongPtr 'Close the clipboard Private Declare PtrSafe Function CloseClipboard Lib "user32" () As LongPtr 'Convert the handle into an OLE IPicture interface. Private Declare PtrSafe Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As uPicDesc, RefIID As GUID, ByVal fPictureOwnsHandle As LongPtr, IPic As IPicture) As LongPtr 'Create our own copy of the metafile, so it doesn't get wiped out by subsequent clipboard updates. Declare PtrSafe Function CopyEnhMetaFile Lib "gdi32" Alias "CopyEnhMetaFileA" (ByVal hemfSrc As LongPtr, ByVal lpszFile As String) As LongPtr 'Create our own copy of the bitmap, so it doesn't get wiped out by subsequent clipboard updates. Declare PtrSafe Function CopyImage Lib "user32" (ByVal handle As LongPtr, ByVal un1 As LongPtr, ByVal n1 As LongPtr, ByVal n2 As LongPtr, ByVal un2 As LongPtr) As LongPtr 'The API format types we're interested in Con esta modificación debería trabajar sin problemas tanto en office x86 como x64. Saludos.
×
×
  • Create New...

Important Information

Privacy Policy