Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Pedir datos al iniciar documento de Word (inputbox)
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Pedir datos al iniciar documento de Word (inputbox)

Publicar nuevo tema Responder al tema
Foros de discusión » Varios (seguridad, internet, ofimática, errores)   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Pedir datos al iniciar documento de Word (inputbox) Responder citando

Estoy realizando en Word 97 una serie de plantillas de documentos, lo que pretendo es que cuando el usuario abra un documento de word le aparezcan directamente varios InputBox (cuadros de texto) pregúntándole los datos a rellenar. Tras ir introduciéndolos los irá insertando automáticamente en el marcador correspondiente.

Se trata de unos documentos modelo donde sólo hay que modificar determinados campos de texto. Por ello quiero que el usuario no tenga que ir moviéndose por el documento, sino que automáticamente le vaya pidiendo los datos e insertándolos en el documento.

He conseguido realizar la inserción de texto en los marcadores que he puesto con Visual Basic (VBA), pero no sé cómo hacer para que al abrir el documento le aparezcan los inputbox pidiéndole los datos.
MensajePublicado:
Sab Jun 16, 2007 5:43 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Pedir datos al iniciar documento de Word (inputbox) Responder citando

varios escribió:
Estoy realizando en Word 97 una serie de plantillas de documentos, lo que

pretendo es que cuando el usuario abra un documento de word le aparezcan directamente varios

InputBox (cuadros de texto) pregúntándole los datos a rellenar. Tras ir introduciéndolos los irá

insertando automáticamente en el marcador correspondiente.

Se trata de unos documentos modelo donde sólo hay que modificar determinados campos de texto. Por

ello quiero que el usuario no tenga que ir moviéndose por el documento, sino que automáticamente

le vaya pidiendo los datos e insertándolos en el documento.

He conseguido realizar la inserción de texto en los marcadores que he puesto con Visual Basic

(VBA), pero no sé cómo hacer para que al abrir el documento le aparezcan los inputbox pidiéndole

los datos.



Para crear un procedimiento en VBA (Visual Basic para Aplicaciones) que se ejecute al abrir un

documento de Word deberás seguir los siguientes pasos (es válido para Word 97, 2000, 2003, 2007,

siempre que tengas la opción de macros habilitada):

1. Crearemos un documento de word con el texto que consideremos. Insertaremos los marcadores en

el lugar que queramos insertar el texto automáticamente. Les daremos un nombre y guardaremos el

documento. En este documento de Word que utilizaremos como plantilla añadiremos una nueva macro.

Es importante llamarla "AutoOpen", esta será la macro que ejecute Word al abrir el documento.

En nuestro caso hemos insertado los siguientes marcadores: "maNombre", "maDireccion", "maPoblacion", "maTelefono", "maMatricula", "maMarca", "maModelo", "maFechaInfraccion", "maNumExpediente", "maDenunciado", "maFecha".

2. En el código fuente de la macro "AutoOpen" colocaremos una llamada a una función /

procedimiento que hayamos creado en el módulo de Visual Basic. También podremos colocar

directamente el código fuente para insertar el texto que se irá pidiendo al usuario en el

marcador correspondiente.

Por ejemplo:

Código:

Sub AutoOpen()
  insertarTextoMarcadorPropio
End Sub


3. El procedimiento "insertarTextoMarcadorPropio" tendrá el siguiente código:
Código:

Public Sub insertarTextoMarcadorPropio()
  Dim vpTexto As String

  insMarc pedirDatos("Nombre del Interesado", ""), "maNombre"
  insMarc pedirDatos("CIF/NIF", ""), "maCIF"
  insMarc pedirDatos("Dirección (calle, número, piso)", ""), "maDireccion"
  insMarc pedirDatos("Población, código postal", ""), "maPoblacion"
  insMarc pedirDatos("Teléfono", ""), "maTelefono"
  insMarc pedirDatos("Matrícula", ""), "maMatricula"
  insMarc pedirDatos("Marca", ""), "maMarca"
  insMarc pedirDatos("Modelo", ""), "maModelo"
  insMarc pedirDatos("Fecha infracción", ""), "maFechaInfraccion"
  insMarc pedirDatos("Número Expediente/Boletín", ""), "maNumExpediente"
  insMarc pedirDatos("Hecho Denunciado", ""), "maDenunciado"
  insMarc pedirDatos("Fecha", Format(Date, "Long Date")), "maFecha"
End Sub



4. El procedimiento "insMarc" tendrá el siguiente código:
Código:

Public Sub insMarc(valor As String, marcador As String)
  On Error GoTo cError
 
  Documents.Item(1).Bookmarks.Item(marcador).Range.Text = valor
 
cSalir:
  Exit Sub

cError:
  MsgBox "El marcador " + marcador + " no existe en el documento. Consulte con el departamento de

informática."
  GoTo cSalir
End Sub




5. La función pedir datos tendrá el siguiente código:
Código:

Public Function pedirDatos(mensaje As String, valorDefecto As String) As String
  Dim resultado As String
 
  resultado = ""
  resultado = InputBox(mensaje, "Inserción de datos", valorDefecto)
  pedirDatos = resultado
End Function



6. Guardaremos el código fuente en VBA para el documento actual. Para probarlo abriremos el

documento. Si tenemos las macros habilitadas nos aparecerán los InputBox.
MensajePublicado:
Sab Jun 16, 2007 6:33 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Varios (seguridad, internet, ofimática, errores)  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A