¿Como cambiar el nombre de un archivo desde el documento?

26/01/2007 - 22:51 por María | Informe spam
Tengo hecha una plantilla de un formulario y me gustaria que el campo que
tengo asociado a Nombre se ponga directamente como nombre de ese archivo y no
tener que ponerlo de nuevo cuando guardo el documento generado por la
plantilla en el casillero de Nombre de archivo en el cuadro de dialogo
guardar como

Gracias por vuestra atención

Preguntas similare

Leer las respuestas

#11 Tux
29/01/2007 - 00:39 | Informe spam
María escribió:
Bueno Mónica, en efecto ya lo había hecho así el problema me viene en

Si le doy a depurar me sale ActiveDocument. SaveAs FileName: =X en amarillo

Cuando le doy a ejcutar macro para comprobar si esta funciona me sale error
"5152" en tiempo de ejecución
No es un archivo válido
Pruebe una o varias de las siguientes operaciones:
* Comprube la ruta de acceso para asegurarse de que se escribió
correctamentee
*Seleccione un archivo de la lista de archivos y carpetas.

No alcanzo a ver donde puede estar el error. Quizás alguien logre ver donde
está.
No parece que el error esté en el nombre del texto, sino en lo que viene
después de File NameOpenDirectory.

Gracias, haber si lo logramos




Vale ok amos alla :-)

Dime exactamente la ruta exacta donde quieres guardar el documento :-)

Ponmela aqui :-)

que montaremos el codigo exactamente con la ruta y el nombre del
Formtext exacto :-)




www.fermu.com
www.zorval.com
Respuesta Responder a este mensaje
#12 María
29/01/2007 - 00:47 | Informe spam
Bien Mónica ahora lo que me sale subrayado en amarillo es
X = ActiveDocument.FormFields("Text13").Result a la hora de ejecutar la
macro

"Tux" escribió:

María escribió:
> Bueno Mónica perdón por no entenderte, en efecto es un FORMTEXT
> Un saludo
>

VAle y si es asi entonces me he liado yo sola :-( mira la ruta que este
correcta exactamente que sea esa por ejemplo:

Sub SaveAs_FormFields()

Dim X As String
X = ActiveDocument.FormFields("Text13").Result


ChangeFileOpenDirectory _
"H:\Documents and Settings\Juan\Mis documentos\"
ActiveDocument.SaveAs FileName:=X
End Sub

Como ves esta ruta pertenece al directorio " H " con eso hay que tener
cuidado y sobre todo la barra final invertida en Mis documentos si es
este caso o si es otra carpeta por ejemplo "C:..\Mi carpeta\"

Mira eso tambien :-)


www.fermu.com
www.zorval.com

Respuesta Responder a este mensaje
#13 Tux
29/01/2007 - 00:53 | Informe spam
María escribió:
Bien Mónica ahora lo que me sale subrayado en amarillo es
X = ActiveDocument.FormFields("Text13").Result a la hora de ejecutar la
macro




Vale ok :-) bien vamos bien :-)

copia y pega este codigo pero con cuidado con la ruta de ponerla con sus
barras invertidas bien : (mira que el FormText tenga algo escrito por
ejemplo pon tu nombre en el formtext, antes de ejecutar la macro ok? :-)

Sub SaveAs_FormFields()

Dim X As String
X = ActiveDocument.FormFields("Texto13").Result


ChangeFileOpenDirectory _
"C:\Documents and Settings\Juan\Mis documentos\"
ActiveDocument.SaveAs FileName:=X
End Sub

Simplemente cambia el nombre del usuario

Comentame ok?


www.fermu.com
www.zorval.com
Respuesta Responder a este mensaje
#14 María
29/01/2007 - 01:33 | Informe spam
Vamos en buen camino, si yo ejecuto la macro desde el cuadro de dialogo de
MACRO se cambia el nombre del archivo.
Bien lo que yo quiero que haga ahora la macro es que automaticamente cada
vez que hago un documento de una plantilla al cerrarlo ponga el nombre que he
puesto en el campo "texto13" en nombre de archivo y ponerlo en la carpeta que
yo quiero (esto último ya lo tengo solucionado).
Vaya tabarra que te estoy dando, lo siento

"Tux" escribió:

María escribió:
> Bien Mónica ahora lo que me sale subrayado en amarillo es
> X = ActiveDocument.FormFields("Text13").Result a la hora de ejecutar la
> macro
>

Vale ok :-) bien vamos bien :-)

copia y pega este codigo pero con cuidado con la ruta de ponerla con sus
barras invertidas bien : (mira que el FormText tenga algo escrito por
ejemplo pon tu nombre en el formtext, antes de ejecutar la macro ok? :-)

Sub SaveAs_FormFields()

Dim X As String
X = ActiveDocument.FormFields("Texto13").Result


ChangeFileOpenDirectory _
"C:\Documents and Settings\Juan\Mis documentos\"
ActiveDocument.SaveAs FileName:=X
End Sub

Simplemente cambia el nombre del usuario

Comentame ok?


www.fermu.com
www.zorval.com

Respuesta Responder a este mensaje
#15 Tux
29/01/2007 - 11:02 | Informe spam
María escribió:
Vamos en buen camino, si yo ejecuto la macro desde el cuadro de dialogo de
MACRO se cambia el nombre del archivo.
Bien lo que yo quiero que haga ahora la macro es que automaticamente cada
vez que hago un documento de una plantilla al cerrarlo ponga el nombre que he
puesto en el campo "texto13" en nombre de archivo y ponerlo en la carpeta que
yo quiero (esto último ya lo tengo solucionado).
Vaya tabarra que te estoy dando, lo siento




Hola María, ya toy aqui :-)

Bien una vez hecho esto para cuando cierres el documento se guarde
haremos lo siguiente:

Vamos a poner el codigo en un evento del libro en este caso utilizaremos
el evento :

[Private Sub Document_Close()]

Este evento es utilizado para cuando se cierra el libro, osea que todo
aquello que tu quieras que realice el codigo cuando le das a cerrar libro.

En este caso queremos que nos guarde el formulario (ya sea como
documento [.doc] ya sea como plantilla [.dot] con el nombre que le
hayamos puesto en el campo de texto [FormText] ok? :-)

Bien para ello este codigo se utiliza en la ventana de codigo
ThisDocument, perteneciente al documento, me explico:

Hay varias maneras de poner codigo mejor dicho de utiizar codigo en un
libro, las mas elementales, digamoslo asi para que se entienda, dejando
los tecnicismos a un lado:

Podemos insertar un modulo digamoslo Modulo "Normal" podemos utilizar
Modulos de clase, y podemos utilizar eventos de libro. Cada código tiene
que ir a su sitio, para utilizar macros de ejecucion (aquellas que le
das a ejecutar macro desde la interfaz del documento) utilizaremos
Modulos normales (una manera de insertar un "modulo normal" menu
insertar > modulo ) para utilizar macros de Evento (una manera de
insertarlos, Menu Insertar > modulos de clase ) utilizado para crear
codigo personalizado y estan por ultimo utilizacion de eventos que son
digamoslo una forma que tiene word, excel, etc... de permitirnos
utilizar , ejecutar, código basado en una acciones que tienen lugar en
ese libro. Word por ejemplo tiene varios niveles de eventos ¿como se
encuentran? muy facil todos estan en :

ThisDocument (cuando se abre visualBasicWord, vemos que a la izquierda
tenemos nuestro proyecto y ahi tenemos ThisDocument dentro de la carpeta
"Microsoft Word Objetos" que tiene el dibujo del libro de word pues si
hacemos dos clicks nos aparece al lado a la derecha la ventana para
introducir codigo pues bien arriba tenemos dos desplegables :

uno que pone (general) y otro que pone (Declaraciones) si se le da click
al despleglabe en GENERAL veremos que tambien pone Document pues si le
damos clicks ahi donde dice Document veremos que se nos ha puesto un
codigo de evento en este caso se no pone Document_New() pues si le damos
donde antes ponia (Declaraciones) si le damos al desplegable veremos ahi
todos los niveles de eventos que hay para ese libro :-)

Bien que me lio yo sola con el codigo jejeje! :-)

Conclusion hemos de utilizar el codigo Document_Close() en
ThisDocument(como he explicado panel de la izquierda en Visual Basic)
quedando asi:

'-

Private Sub Document_Close()

Documents("Maria.doc").Saved = True

Dim X As String

X = ActiveDocument.FormFields("Texto1").Result


ChangeFileOpenDirectory _
"C:\Documents and Settings\Maria\Mis documentos\"
ActiveDocument.SaveAs FileName:=X

End Sub

'-

Bien explicacion del codigo :

Esta linea de codigo :

Documents("Maria.doc").Saved = True

Dice que guarde el documento original sobre el que se esta trabajando,
que puede ser una extension [Maria.doc] o si es plantilla [Maria.dot]
con los dos trabaja igual. Perooooooo se puede suprimir, Eliminar, si no
queremos guardar el Formulario Original pero si queremos guardarlo hay
que añadirla para evitar que nos pregunte si queremos guardar el
Formulario Original.

Bueno esto es un poco de aclaracion de codigo, no se si me explicado muy
bien :-P pero si tienes alguna duda sobre ello o quieres realizar
cualquier consulta tu no dudes en preguntarnos ok? ;-)


¡Un Saludo!
Monica

PD: Toda programacion esta orientada a Objetos, Metodos y propiedades ;-)




¡Un SAludo! :-)

www.fermu.com
www.zorval.es
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida