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.
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