Archivos de word por registros

Hola Alonso, lo que pasa es que hice un formulario en el cual ingreso unos registros de personas con su información personal, pero cada persona tiene un folio de vida el cual se hace en word, entonces lo que necesito es crear un botón de comando con un código que me abra el archivo de word del respectivo registro automáticamente después de darle click a el botón (es decir, sin necesidad de que yo tenga que buscar el archivo) ya que he visto algunos códigos que incluyen GETFILE y esos no me sirven como te digo que lo abra sin necesidad de buscarlo.
Gracias.

1 respuesta

Respuesta
1
Entonces lo que tienes que hacer es guardar la ruta del archivo de word en un campo memo, esto lo puedes hacer cuando guardes un registro nuevo para lo cual si implicaría utilizar la función GetFile(), una vez hecho esto, cuando vayas a consultar el archivo tendrías que hacer clic en un botón que abra el archivo de word para lo cual agregas un botón para mostrar el archivo el cual puede ser el siguiente código:
* Este es un código de ejemplo para abrir un archivo de Microsoft Word
* pero también sirve para abrir un archivo de cualquier aplicación.
Declare Integer ShellExecute In shell32 Integer hwnd, String lpOperation, String lpFile,String lpParameters, String lpDirectory, Integer nShowCmd
Declare Integer FindExecutable In shell32 String lpFile, String lpDirectory, String @lpResult
Declare Integer GetActiveWindow In Win32Api
#DEFINE SW_SHOWMAXIMIZED 3
#DEFINE OUT_OF_MEM_OR_REC 0
#DEFINE ERROR_FILE_NOT_FOUND 2
#DEFINE ERROR_PATH_NOT_FOUND 3
#DEFINE SE_ERR_ACCESSDENIED 5
#DEFINE SE_ERR_OOM 8
#DEFINE ERROR_BAD_FORMAT 11
#DEFINE SE_ERR_SHARE 26
#DEFINE SE_ERR_ASSOCINCOMPLETE 27
#DEFINE SE_ERR_DDETIMEOUT 28
#DEFINE SE_ERR_DDEFAIL 29
#DEFINE SE_ERR_DDEBUSY 30
#DEFINE SE_ERR_NOASSOC 31
Local lcSampleDoc, lcDirectory, lcBuffer, lcWindow, lcError, lcResult
lcSampleDoc = "D:\Mi documento.doc" && Aquí debe ir la ruta almacenada en el campo memo de la tabla ejemplo: lcSampleDoc = Personal.RutaArchivo. 
* Mostrar mensaje si el archivo no existe.
If !File(lcSampleDoc)
  Messagebox("El archivo no existe.", 64, "Ejemplo")
  Return
EndIf
lcDirectory = ""
lcBuffer = Space(255)
* Encontrar la aplicación que abre el archivo, en este caso Microsoft Word.
lcResult = FindExecutable(@lcSampleDoc, @lcDirectory,@lcBuffer)
lcError = !(lcResult >= 32)
If lcError
  Do Case
     Case lcResult = OUT_OF_MEM_OR_REC
         Messagebox("Recursos o memoria insuficiente.", 64, "Ejemplo")
         Return
     Case lcResult = ERROR_FILE_NOT_FOUND
         Messagebox("El archivo no existe.", 64, "Ejemplo")
         Return
     Case lcResult = ERROR_PATH_NOT_FOUND
         Messagebox("Ruta de archivo no válida.", 64, "Ejemplo")
         Return
     Case lcResult = ERROR_BAD_FORMAT
         Messagebox("Formato ejecutable no válido.", 64, "Ejemplo")
         Return
     Case lcResult = SE_ERR_NOASSOC
         Messagebox("No se enconbtró asociación para el tipo de archivo.", 64, "Ejemplo")
         Return
  EndCase
EndIf
* Abrir el archivo seleccionado.
lcWindow = GetActiveWindow()
lcResult = ShellExecute(lcWindow, "Open", lcSampleDoc, Null, lcDirectory, SW_SHOWMAXIMIZED)
lcError = !(lcResult >= 32)
If lcError
  Do Case
      Case lcResult = OUT_OF_MEM_OR_REC
          Messagebox("Recursos o memoria insuficiente.", 64, "Ejemplo")
          Return
      Case lcResult = ERROR_FILE_NOT_FOUND
          Messagebox("El archivo no existe.", 64, "Ejemplo")
          Return
      Case lcResult = ERROR_PATH_NOT_FOUND
          Messagebox("Ruta de archivo no válida.", 64, "Ejemplo")
          Return
      Case lcResult = SE_ERR_ACCESSDENIED
          Messagebox("Acceso denegado al archivo.", 64, "Ejemplo")
          Return
      Case lcResult = SE_ERR_OOM
          Messagebox("No hay suficiente memoria para completar la operación.", 64, "Ejemplo")
          Return
      Case lcResult = ERROR_BAD_FORMAT
          Messagebox("Formato ejecutable no válido.", 64, "Ejemplo")
          Return
      Case lcResult = SE_ERR_SHARE
          Messagebox("Ha ocurrido una violación al compartir archivo.", 64, "Ejemplo")
          Return && Podría abrirse el archivo de sólo lectura.
      Case lcResult = SE_ERR_ASSOCINCOMPLETE
          Messagebox("La asociación del nombre de archivo está incompleta o no es válida.", 64, "Ejemplo")
          Return
      Case lcResult = SE_ERR_DDETIMEOUT
          Messagebox("No se podría completar la transacción de intercambio de datos dinámicos" + Chr(13);
+ "debido a que se requiere más tiempo.", 64, "Ejemplo")
          Return
      Case lcResult = SE_ERR_DDEFAIL
          Messagebox("Falló la transacción de intercambio de datos dinámicos.", 64, "Ejemplo")
          Return
      Case lcResult = SE_ERR_DDEBUSY
          Messagebox("La transacción de intercambio de datos dinámicos" + Chr(13);
+"no pudo completarse debido a que otras transacciones" + Chr(13);
+"de intercambio de datos dinámicos se están procesando.", 64, "Ejemplo")
          Return
      Case lcResult = SE_ERR_NOASSOC
          Messagebox("No se enconbtró asociación para el tipo de archivo.", 64, "Ejemplo")
          Return
  EndCase
EndIf
Clear Dlls

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas