Saltar al contenido

Duada con GetOpenFileName


Recommended Posts

publicado

Buenas tardes colegas. Espero se encuentren bien de salud.

Colegas, en este pequeño Proyecto pretendo trabajar el Comprobante de Operaciones de las Nóminas de los trabajadores de mi empresa y he creado un grupo de "herramientas" para facilitar mi trabajo y un grupo de informaciones que debo brindar, pero para completar o "redondearlo" necesito convertir un archivo .xlsx en .dbf.

He estado preguntando si existe alguna manera de hacerlo, si alguno de ustedes conoce un medio o método que me pueda ayudar, por lo pronto yo lo que pretendo hacer es lo siguiente:

1.- Crear un archivo (puede ser .xlsx o .xls) con nombre Comprobante Nomina, que debe ser el que se encuentra en la Hoja3, rango A3:C45 y ubicarlo en un lugar determinado, que puede ser dentro de la misma carpeta donde se encuentra el archivo Comprobante de Nominas v3.0.5.xlsm. Esto quiero hacerlo a través de una Macro.

2.- En el FrmComprobante1 a través del Botón "Generar .dbf" accedo al FrmComprobanteDBF y dentro de este pretendo buscar con GetOpenFleName un conversor o convertidor de .xls a .dbf, hacer la conversión y el resultado de esta guardarlo en la misma carpeta inicial, para después con el Programa de Contabilidad, importar ese archivo .dbf

En la Hoja DBF está el formato (que debe generarlo de manera automática).

Todo esto es lo que me gustaría que hiciera porque así se complementaria el Proyecto y reduciría mi trabajo en un 75% y me ahorraría además tiempo, solo que YO NO SE HACER ESTO QUE LES ESTOY DICIENDO, de hecho no se si se pueda hacer, pero me gustaría que me dieran su opinión y de ser posible me ayuden a buscar la solución.

De antemano Gracias mil a todos.

Adjunto archivo

Un abrazo

Pino

Comprobante de Nóminas v3.0.5.xlsm

publicado

Hola

Hace varias versiones de Excel que Microsoft decidió quitar la opción de guardar como *.dbf y si bien en su momento hubo mucho reclamo desde la comunidad, la respuesta de Microsoft siempre fue: Háganlo desde Access.

Segundo,  y yendo a tus comentarios, el control de Excel y VBA sobre otros programas es bastante limitado y algo como lo que mencionas es muy difícil ya que, si bien con SHELL o similares se puede abrir otros programas, los procedimientos y/o pasos para hacer todo lo que mencionas, básicamente tendrías que hacerlos con SendKeys y es un método muy inestable y para nada 100% certero. Además, para ayudarte tendríamos que tener el mismo programa que tú instalado y nada garantiza que funcione.

Tercero, una alternativa es que uses Access y no Excel, pero claro, ojo que los archivos *.dbf tienen muchos tipos, no vaya a ser que lo que se exporta desde Access no sea compatible con lo que necesitas.

Hablando de Access, y si logras probar que sí es el formato dbf que necesitas, la alternativa para seguir usando Excel es que a través de VBA envíes los datos a Access y una vez enviados, también con ADO pasas los datos de Access a dbf, pero ojo, tienes que estar 100% seguro que es el formato que necesitas.

Ah, ojo, en realidad el ideal es que uses para esas cosas programas compatibles con dbf como Visual Fox 9 por ejemplo.

Saludos.

publicado

Buenos días colegas. espero su salud sea excelente el día de hoy.

Buenos días amigo Abraham, son mis deseos que se encuentre usted bien al igual que su familia.

Sé que las versiones nuevas de Excel excluyen esa posibilidad, pero son decisiones en las que nosotros podemos hacer bien poco.

Por otro lado, y de acuerdo a lo que me comentas, imagino que lo que deseo no es posible, de cualquier manera gracias por sus consejos que son siempre muy bien recibidos.

Tenga usted y los demás miembros del Foro un excelente fin de semana.

Un abrazo y mis respetos.

Pino

publicado
En 5/8/2022 at 15:50 , pinoji dijo:

Por otro lado, y de acuerdo a lo que me comentas, imagino que lo que deseo no es posible,

Bueno, siempre hay algo posible o algo que probar... ?. Aparte de todo o que te ha dicho @Abraham Valencia ten en cuenta que yo no tengo DBase para probar lo que te paso, ni sé qué formato de DBase usas.

Por defecto te he puesto "DBase IV", pero quizás sea "DBase III", con lo que habría que hacer unos pequeños ajustes en el código y las bases de datos.

Te paso un ZIP con:

  • La base de datos en Access
  • La base de datos en DBF (DbaseIV)
  • EL fichero Excel

Ahora al pulsar sobre "crear DBF" directamente hace todo el proceso. Ten en cuenta que el camino es "Excel" -->"Access"-->DBF, por lo qué no sé cómo será el resultado final, pues no tengo DBase para probar.

Prueba tú y comenta, aparte de decirnos el formato o versión de DBase que usas. Todo esto es suponiendo que tenga Access insrtalado, si no no hay nada que hacer :(

Pon todos los ficheros del ZIP en el mismo directorio.

Saludos

 

comprobante de nominas.zip

publicado

Aparte hay un método mucho más directo y fácil que no sé cómo funcionara. Es el metodo SaveAs del Workbook.
 

Sheets("Comprobante1").Copy
Range("1:2").Delete

ActiveWorkBook.SaveAs Filename:=Nominas.dbf, Fileformat:=7 '<-- DBase2
ActiveWorkBook.SaveAs Filename:=Nominas.dbf, Fileformat:=8'<-- DBase3
ActiveWorkBook.SaveAs Filename:=Nominas.dbf, Fileformat:=11 '<-- DBase4

 

publicado

Buenos días Colegas. Espero se encuentre con excelente salud.

Buenos días Haplox, son mis deseos que usted y su familia se encuentren bien de salud.

Profesor, la primera variante me da un error.  (Adjunto imagen.)

El segundo caso que me sugiere ¿dónde lo coloco? ¿dentro del Botón, sin más lineas de códigos que esas?

Ahora acá, en mi trabajo, no tengo una muestra de una base de datos, pero en la casa si tengo en una USB, tendría que esperar a mañana para enviársela y usted revise.

El Office que está instalado en las PC del trabajo es 2013, creo que quizás eso también tenga que ver.

Gracias por contestar.

Mañana seguiremos.

Un abrazo y mis respetos.

Pino

Imagen.docx

publicado

Hola amigos

Access 2013 no tiene la posibilidad de exportar a dbf, hay una forma de poder lograrlo pero tienes que hacer unos cambios al registro de Windows, además de instalar un driver y, ojo, quizás ligeros cambios a lo que envía el buen Haplox

http://jonwilliams.org/wordpress/2014/03/21/enabling-xbase-dbf-support-in-microsoft-office-access-2013/

Sobre la segunda forma que propone Haplox, lamentablemente no son válidas ya debido a que, como ya había comentado, se quitaron de Excel los drivers necesarios para guardar en dbf. La codificación aún se puede usar en VBA por compatibilidad. Ah bueno, a menos que tengan un Office antiguo, ahí sí que funcioanrá.

publicado
Hace 12 horas, pinoji dijo:

El Office que está instalado en las PC del trabajo es 2013, creo que quizás eso también tenga que ver

Bueno, pues como comenta Abraham, todo se nos pone en contra. En fin... al menos lo hamos intentado

publicado

Buenos días colegas.

Así mismo es mis amigos. Por el momento nada que hacer, pero sí, al menos lo hemos intentado y nos queda esa satisfacción.

Gracias a ambos por su tiempo y consejo.

Un abrazo desde acá y mis respetos.

Pino

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    3    1

  • Crear macros Excel

  • Mensajes

    • Saludos amigos espero estén bien  En la actualidad utilizo la siguiente macro para generar un código alfanumérico continuo que al guardar los datos se copia en la Celdas “B5” de las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) Private Sub CommandButton3_Click()     If Hoja58.Range("B5").Value < 9999 Then Hoja58.Range("B5").Value Hoja58.Range("B6").Value + 1     Else        Hoja58.Range("B5").Value = 1     End If If Hoja59.Range("B5").Value < 9999 Then Hoja59.Range("B5").Value = Hoja59.Range("B6").Value + 1 Else        Hoja59.Range("B5").Value = 1     End If End Sub El código se genera normalmente sin embargo no se copia inmediatamente en las Celdas “B5” sino que aparece en las Celdas “B6” mientras que las Celdas “B5” siempre permanecen en blanco, actualmente el código consta de tres letras y cuatro dígitos (RCI-0000) pero me interesa poderle concatenar el mes y año en formato mm-yy para que el código finalmente quede expresado de la siguiente forma RCI-0000-00-00 Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad  los datos provenientes de los TextBox 5, 6 y 7 se guardan en las Columnas H, I y O de las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) sin embargo cuando el texto es abundante no se visualiza completamente en las celdas correspondientes de allí que necesito que cada fila se ajuste al tamaño de la celda que contenga mayor cantidad de texto para lo cual he probado con la siguiente macro: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.EntireRow.AutoFit End Sub Sin embargo, dicha macro coloca todas las filas del tamaño del texto que contengan y lo que en realidad necesito es que dicha macro solo se aplique desde la Fila 5 en adelante. Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad utilizo la siguiente macro para que la fecha aparezca en el Textbox2: Private Sub UserForm_activate() Me.TextBox2.Value = VBA.Date End Sub Sin embargo, una vez guardo los datos la fecha cambia de formato y se guarda en formato mm/dd/yyyy en vez de dd/mm/yyyy y este cambio de fecha me distorsiona los resultados de las fórmulas en las Columnas J en las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • ¡Hola! Después de un buen tiempo ausente...  @Gabriela hg ya que veo que tienes Excel 365, te dejo mi solución para piezas y gramos.   Extraer piezas - gramos 365_GP.xlsx
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.