Español (spanish formal Internacional)

Fermu Website

Home
FireBoard
Bienvenido(a), Invitado(a)
Por favor Ingresa o Registrar.    Contraseña Perdida?
Re: Boton de documento word en formulario de acces (1 viendo) (1) Invitado
Ir al fondo Publicar respuesta Favorito: 2
Tema: Re: Boton de documento word en formulario de acces
#8036
fprat (Usuario)
Ocasional
Publicaciones: 30
graphgraph
Usuario Desconectado Haga clic aquí para ver el perfil de este usuario
Re: Boton de documento word en formulario de acces 6 Meses, 1 Semana antes Karma: 0  
QUOTE:
¿Sabéis cómo preguntar desde VBA a un documento Word si contiene cierta subcadena (la marca) o no lo hace?


A esto, me contesto yo solo: pues cuando llamas al método Execute de un objeto de tipo Find, el método devuelve un valor lógico diciendo si la búsqueda ha tenido éxito (VERDADERO) o ha sido infructuosa (FALSO). Y también hay una propiedad Found donde se guarda si la búsqueda ha sido exitosa o no, pero vaya, una solución para lo que yo quería es ésta:

Código:

If wordDoc.Content.Find.Execute(FindText:=labelToBeReplaced) Then...
Para hilar fino, lo que hago en cada pregunta es utilizar un objeto Find asociado a un objeto Range (en este caso, wordDoc.Content) que creo "al vuelo" con todo el contenido del documento wordDoc (bueno, encabezados y pies de página parece que no). Si utilizara el objeto Find asociado a appWord.Selection, podría tener problemas "de memoria", esto es, que me contestara que algo no se encuentra (aun estando en el documento) porque lo último que buscó lo encontró más adelante de donde se halla lo que busca ahora y, por defecto, la búsqueda la está haciendo hacia adelante y sin "wrapping". En fin, un detalle un poco molesto relacionado con que el objeto se acuerde de por dónde se quedó la última vez que buscó... Hala, me voy a pegar patadas a un balón Yo, no mi Mii Bye! Fede
 
Reportar al moderador   Reporte guardado Reporte guardado  
 
Última modificación: 15-05-2008 03:25:04 Por fprat.
  El administrador ha desactivado el acceso a escritura pública.
#8055
fprat (Usuario)
Ocasional
Publicaciones: 30
graphgraph
Usuario Desconectado Haga clic aquí para ver el perfil de este usuario
Re: Boton de documento word en formulario de acces 6 Meses, 1 Semana antes Karma: 0  
Hola, alegre pandilla

A las cosas que voy averiguando, me contesto yo solo:

QUOTE:
¿sabrías cómo preguntar en VBA si un documento tiene o no un determinado marcador?


Para preguntarle al Word.Document wordDoc si tiene un marcador llamado "hola", habría que hacer lo siguiente:

Código:

If wordDoc.Bookmarks.Exists("hola") Then...
Esto está bien, vamos aprendiendo cosas. Be happy! Fede PS: Andrés, hace tiempo que no se te ve (lee) por aquí. ¿Estás "empollando" mucho VBA?
 
Reportar al moderador   Reporte guardado Reporte guardado  
  El administrador ha desactivado el acceso a escritura pública.
#8059
fprat (Usuario)
Ocasional
Publicaciones: 30
graphgraph
Usuario Desconectado Haga clic aquí para ver el perfil de este usuario
Re: Boton de documento word en formulario de acces 6 Meses, 1 Semana antes Karma: 0  
Is anybody there?

Según voy averiguando cosas, las incorporo a la BD de ejemplo que empezó Mónica (adjunto mi cuarta versión):

Código:

Option Compare Database Option Explicit Private Sub BotonWord_Click() Const plantilla As String = "\miplantilla.dot" Const maxToReplace As Integer = 255 Dim appWord As Word.Application Dim wordDoc As Word.Document Dim formField As DAO.Field Dim allDocument As Range Dim lenPending As Long Dim labelToBeReplaced, nextStr, pendingStr As String Dim maxLeftByLabel As Integer 'falta el tratamiento de errores' Set appWord = New Word.Application With appWord .Visible = False End With Set wordDoc = appWord.Documents.Add(CurrentProject.Path & plantilla) With appWord.Selection.Find For Each formField In Me.Recordset.Fields 'MsgBox "Tratando el campo: " & formField.Name' labelToBeReplaced = "<<" & formField.Name & ">>" If wordDoc.Content.Find.Execute(FindText:=labelToBeReplaced) Then maxLeftByLabel = maxToReplace - Len(labelToBeReplaced) .Text = labelToBeReplaced pendingStr = Me(formField.Name).Value & "" 'para prevenir nulos' lenPending = Len(pendingStr) Do 'incluso si el campo está vacío hay que sustituir una vez...' If lenPending > maxToReplace Then nextStr = Left(pendingStr, maxLeftByLabel) & labelToBeReplaced lenPending = lenPending - maxLeftByLabel pendingStr = Right(pendingStr, lenPending) Else nextStr = pendingStr lenPending = 0 pendingStr = "" End If .Replacement.Text = nextStr Call .Execute(Replace:=Word.WdReplace.wdReplaceAll) Loop While lenPending > 0 End If Next formField End With With appWord .Visible = True .Activate .WindowState = wdWindowStateMaximize End With Set appWord = Nothing Set wordDoc = Nothing Set formField = Nothing Exit Sub End Sub
(He cerrado con una comilla simple innecesaria cada comentario del código, para que el visualizador del foro no se líe.) Algunas novedades: 1. Ya voy recorriendo automáticamente todos los campos del formulario. Utilizo un objeto Recordset para ello, pero no uno que tenga que crear mediante una consulta, sino el Recordset propio del formulario, al que accedo mediante una propiedad de éste. 2. Por cada uno de los campos, antes de intentar incorporarlo a la plantilla Word, compruebo que realmente haya alguna marca de ese campo en la plantilla. 3. Siempre que haya marca, entraré al menos una vez en el bucle que sustituye "trozo a trozo". Si no me asegurara de ello (con Do/Loop en vez de While/Wend), en el caso de campos vacíos me quedaría con la marca del campo en la plantilla. 4. Me aseguro de que, una vez hechas las correspondientes sustituciones sobre las marcas de la plantilla, el documento resultante se muestre maximizado en la pantalla. Para ello, antes de la asignación sobre appWord.WindowState, necesito appWord.Activate. Lo que me falta todavía es: 1. Un tratamiento de errores decente. 2. Averiguar por qué los párrafos del campo "texto" se muestran en el documento Word con sangría de primera línea (excepto el primer párrafo). Cualquier ayuda será bienvenida. Un saludete. Fede
Adjuntar fichero:
Nombre del fichero: V4.zip
Tamaño del fichero: 31836
 
Reportar al moderador   Reporte guardado Reporte guardado  
 
Última modificación: 16-05-2008 00:29:28 Por fprat.
  El administrador ha desactivado el acceso a escritura pública.
#8060
Mónica (Administrador)
Administrador
Publicaciones: 899
graphgraph
Usuario Desconectado Haga clic aquí para ver el perfil de este usuario
Re: Boton de documento word en formulario de acces 6 Meses, 1 Semana antes Karma: 19  
Benassssss !!!

Como estamos !!!

UY gracias por el aporte Fede ya he aprendido otra cosica mas que no sabia yo mu bien , tenia yo un enlace a una web muy buena de un MVP en Word [creo que era la de Greg] donde daba unas macros con un truquillo para el replace.text pero no me acuerdo muy bien de como era tengo que buscarlo que tengo los enlaces en un archivo y he de buscar el archivo a ver si lo encuentro

Por cierto tu como Juan palomo yo me lo guiso y yo me lo como jajaa!

El tema de los marcadores es muy util para funcionar en word mas que util es socorrido

 
Reportar al moderador   Reporte guardado Reporte guardado  
  El administrador ha desactivado el acceso a escritura pública.
#8061
Mónica (Administrador)
Administrador
Publicaciones: 899
graphgraph
Usuario Desconectado Haga clic aquí para ver el perfil de este usuario
Re: Boton de documento word en formulario de acces 6 Meses, 1 Semana antes Karma: 19  
mejor dicho aportes que nos hemos cruzado

luego a la noche me miro esta nueva version que voy con el tiempo justo a todos los lados

 
Reportar al moderador   Reporte guardado Reporte guardado  
  El administrador ha desactivado el acceso a escritura pública.
#8063
lourdes (Usuario)
Novato
Publicaciones: 19
graphgraph
Usuario Desconectado Haga clic aquí para ver el perfil de este usuario
Re: Boton de documento word en formulario de acces 6 Meses, 1 Semana antes Karma: 0  
Hola Chicos, Hace tiempo que no he podido contectarme, me tenian liadas otras cosas, pero espero volver a engancharme.

Gracias Fede por su aportaciones.
Algunas (muchas) me vienen un poco grade y me pierdo. Tender que empezar a ver esos manuales que nos has facilitado a Adres y a mi.
En cuanto puedea ..... si en cuanto pueda...si se que lo tengo que hacer.

Te agradezco la última aportación, queda muy elegante y con la compodidad de no terner que introducir todos los campos en la sub

Monica, la tuya es la que mejor entiendo es secilla y la utilizo para un formulario más corto que tengo. Mil gracias

Adrés, no entendí bien tu pregunta, aun que seguro que Monica te habrá aclarado algo, pero no te entido bien que quieres hacer

Bueno chicos, AHORA TENGO OTROS PROBLEMAS...que no son de word.

Ya os dige que era la primera vez que me introducia en un foro, por lo que no se si tengo que habrir una nueva consulta o seguimos aqui

OS introduzco algo...

Se trata de un formulario de entrada de datos que los carga sobre una tabla (del que esta craeado).
Este a su vez tiene que obtener datos de otras dos tablas, con cuadros combinados (que si se hacer), la cuestión es que hay campo que deben actualizarse con la opción elegida en esos c.Cob.y que se carge sobre la primera tabla.

Habeis entendido algo
 
Reportar al moderador   Reporte guardado Reporte guardado  
  El administrador ha desactivado el acceso a escritura pública.
Ir al inicio Publicar respuesta
Potenciado por FireBoardObtener las últimas entradas directamente a su escritorio
Web www.fermu.com

Autentifícate



Gente Online

Tenemos 320 invitados conectado
Joomla Templates by JoomlaShack