Archivar documentos word en carpetas desde excel

13/02/2008 - 22:38 por Jose | Informe spam
Hola foro:
Esta exposición la he hecho en el grupo de Word pero quisiera saber si es
posible hacerlo con un procedimiento VBA.
Necesito que alguien me ayude con lo siguiente:
En una carpeta que se llama "Archivo general de clientes", tengo 365
documentos de word que necesito guardar en las subcarpetas de cada uno de
los clientes que tambien se encuentran en esta carpeta general. Los
documentos y las carpetas tienen un nombre mas largo pero el principio de
unos y otras es la referencia única de cada cliente. Es un número de 8
dígitos seguido de un "-" y luego nombre, población, etc... creo que lo
importante son esos 8 dígitos primeros.
Hice algo parecido con fichas de clientes en excel y pude conseguir archivar
las fichas en las subcarpetas aunque la diferencia con lo que necesito ahora
es que al mismo tiempo abría la carpeta y archivaba la ficha. Ahora es
diferente porque las carpetas ya están creadas...
Estoy pensando en un procedimiento que "metiera/archivara" en cada
subcarpeta cuyo nombre empieza por un número de 8 digitos, p.e. "71000123"
el correspondiente documento de word (formato RTF) cuyo nombre empieza con
ese mismo número, es decir: "71000123-patatinpatatan.rtf" y así
sucesivamente.
Si es posible, cuando la subcarpeta no exitiera la creara con el mismo
nombre del documento word y archivara ese documento dentro tambien. (¿con
tratamiento de errores? ... eso sería ya lo máximo).
Gracias por la ayuda.
José Rafael

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
14/02/2008 - 07:07 | Informe spam
hola, Jose !

en tanto comentas detalles mas completos (como un ejemplo de como seria la "ruta completa" del archivo mas largo)...
considera las siguientes alternativas (y algunas "restricciones"... por si las dudas)...

OJO: hablando de nombres de archivos "laarrrrgggosss"... (y hasta donde se)...
-> existe un limite de sistema operativo de +/- 255 caracteres para el largo total de una ruta
lo que incluye: la ruta\unidad y sub\carpetas\el nombre {MAS} la EXTension de tu archivo

para mover/copiar archivos de una ubicacion a otra, puedes usar al menos dos formas:
en los ejemplos, "Origen" y "Destino" son (una cadena de texto que representa)
-> ruta + directorio/s + nombre_archivo + EXT(ension)

1) una instruccion =>Name "Origen" As "Destino"<
a) para renombrar un archivo (mismo directorio) ... los requisitos son ...
(1) que "Origen" EXISTA (y este cerrado) y...
(2) que "Destino" NO EXISTA
(p.e.) Name "C:\Misma ruta\Archivo1.abc" As "C:\Misma ruta\Archivo2.xyz"

b) si "Origen" y "Destino" son diferentes... la instruccion (practicamente) hara lo mismo que...

2) una instruccion =>FileCopy "Origen", "Destino"< en este caso, "Destino" sera INVARIABLEMENTE reemplazado <= OJO

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Esta exposicion la he hecho en el grupo de Word pero quisiera saber si es posible hacerlo con un procedimiento VBA.
Necesito que alguien me ayude con lo siguiente:
En una carpeta que se llama "Archivo general de clientes", tengo 365 documentos de word
que necesito guardar en las subcarpetas de cada uno de los clientes que tambien se encuentran en esta carpeta general.
Los documentos y las carpetas tienen un nombre mas largo pero el principio de unos y otras es la referencia unica de cada cliente.
Es un numero de 8 digitos seguido de un "-" y luego nombre, poblacion, etc... creo que lo importante son esos 8 digitos primeros.
Hice algo parecido con fichas de clientes en excel y pude conseguir archivar las fichas en las subcarpetas
aunque la diferencia con lo que necesito ahora es que al mismo tiempo abría la carpeta y archivaba la ficha.
Ahora es diferente porque las carpetas ya estan creadas...
Estoy pensando en un procedimiento que "metiera/archivara" en cada subcarpeta cuyo nombre empieza por un numero de 8 digitos
p.e. "71000123" el correspondiente documento de word (formato RTF) cuyo nombre empieza con ese mismo numero
es decir: "71000123-patatinpatatan.rtf" y asi sucesivamente.
Si es posible, cuando la subcarpeta no exitiera la creara con el mismo nombre del documento word y archivara ese documento dentro tambien.
(con tratamiento de errores? ... eso seria ya lo maximo).
Respuesta Responder a este mensaje
#2 Jose
14/02/2008 - 07:49 | Informe spam
Hola Héctor:
Siento no haberme explicado mejor.
Con esta ruta, tengo una carpeta: "Archivo general de clientes":
C:\Documents and Settings\José Rafael\Mis documentos\Archivo general de
clientes
En esta carpeta existen 827 subcarpetas cuyos nombres son largos (no mas de
80 caracteres) y todos ellos empiezan con un número diferente y único de 8
digitos por cada cliente.
En esta misma ubicación tengo 825 documentos word en formato RTF cuyos
nombres empiezan tambien con el codigo de cliente, es decir con un número de
8 digitos que al formar parte de un nombre mas largo en realidad es una
cadena de texto (al igual que el nombre de las carpetas).
Pues bien, así como lo he hecho con una fichas en excel que YA están
archivadas dentro de las carpetas, quisiera introducir/meter/archivar estos
documentos word en las carpetas correspondientes de los clientes de acuerdo
con el numero de cliente de 8 digitos con el que ambos empiezan sus
respectivos nombres.
Por si acaso detallo el código que me sirvió para crear las carpetas y
archivar las fichas excel. Ahora la diferencia estriba en que las carpetas
ya están creadas y SOLO necesito mover los documentos dentro de las
carpetas.
Espero haberme explicado mejor y agradezco tu gran ayuda como siempre.
Saludos
José Rafael



Option Explicit

Sub grabafichasdeclientes()
'
Dim nombrelibro As String
Dim a As Variant
Dim Z As Integer
Dim N As Integer
Dim Y As Integer
Dim x As Integer, contador
Dim carpeta As String
Application.ScreenUpdating = False
On Error Resume Next
N = InputBox("Introduce el código de la primera ficha para guardar en su
carpeta", "Primer número", "1")
'If N = 0 Then Exit Sub
'If N = "" Then Exit Sub
x = InputBox("Introduce el código de la última ficha para guardar en su
carpeta", "Último número", "827")
'If x = 0 Then Exit Sub
'If x = "" Then Exit Sub
contador = 1
Z = 0
Y = InputBox("¿Cancelar grabación de fichas?", "si quiere cancelar intruzca
un 0, sino 1", "1")
If Y = 0 Then Exit Sub
'If Y = "" Then Exit Sub
Sheets("Ficha").Select
For Z = N To x
Windows("Listado nº 9 de todos los clientes al 10-1-08.xls").Activate
Sheets("Ficha").Select
Range("J1") = N

carpeta = Range("F6").Value & "-" & Range("C10").Value & "_" &
Range("C14").Value & "-" & Range("I6").Value
MkDir ("C:\Documents and Settings\José Rafael\Mis documentos\Archivo
general de clientes\" & carpeta)
ActiveWindow.Select

Columns("A:J").Select
Selection.Copy
Workbooks.Add
Sheets("Hoja1").Select
Sheets("Hoja1").Name = "Ficha nº " & N

Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
Application.DisplayAlerts = False

Sheets(Array("Hoja2", "Hoja3")).Select
ActiveWindow.SelectedSheets.Delete

Application.DisplayAlerts = True

ActiveWindow.DisplayZeros = False


ChDir "C:\Documents and Settings\José Rafael\Mis documentos\Archivo
general de clientes" & "\" & carpeta & "\"
nombrelibro = "Ficha nº " & N & " -" & Range("F6").Value & " - " &
Range("C10").Value & ".xls"
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\José Rafael\Mis documentos\Archivo
general de clientes" & "\" & carpeta & "\" & nombrelibro _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False


ActiveWorkbook.Close


contador = contador + 1
Sheets("Ficha").Select
Range("A1").Select

If N = x + 1 Then Exit Sub
N = N + 1
ChDir "C:\Documents and Settings\José Rafael\Mis documentos\Archivo
general de clientes"
Next
MsgBox ("Nº de fichas guradadas en sus respectivas carpetas: ") & contador -
1
Application.ScreenUpdating = True
End Sub






"Héctor Miguel" escribió en el mensaje
news:eqECx$
hola, Jose !

en tanto comentas detalles mas completos (como un ejemplo de como seria la
"ruta completa" del archivo mas largo)...
considera las siguientes alternativas (y algunas "restricciones"... por si
las dudas)...

OJO: hablando de nombres de archivos "laarrrrgggosss"... (y hasta donde
se)...
-> existe un limite de sistema operativo de +/- 255 caracteres para el
largo total de una ruta
lo que incluye: la ruta\unidad y sub\carpetas\el nombre {MAS} la
EXTension de tu archivo

para mover/copiar archivos de una ubicacion a otra, puedes usar al menos
dos formas:
en los ejemplos, "Origen" y "Destino" son (una cadena de texto que
representa)
-> ruta + directorio/s + nombre_archivo + EXT(ension)

1) una instruccion =>Name "Origen" As "Destino"<>
a) para renombrar un archivo (mismo directorio) ... los requisitos son
...
(1) que "Origen" EXISTA (y este cerrado) y...
(2) que "Destino" NO EXISTA
(p.e.) Name "C:\Misma ruta\Archivo1.abc" As "C:\Misma
ruta\Archivo2.xyz"

b) si "Origen" y "Destino" son diferentes... la instruccion
(practicamente) hara lo mismo que...

2) una instruccion =>FileCopy "Origen", "Destino"<> en este caso, "Destino" sera INVARIABLEMENTE reemplazado <= OJO

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Esta exposicion la he hecho en el grupo de Word pero quisiera saber si es
posible hacerlo con un procedimiento VBA.
Necesito que alguien me ayude con lo siguiente:
En una carpeta que se llama "Archivo general de clientes", tengo 365
documentos de word
que necesito guardar en las subcarpetas de cada uno de los clientes que
tambien se encuentran en esta carpeta general.
Los documentos y las carpetas tienen un nombre mas largo pero el
principio de unos y otras es la referencia unica de cada cliente.
Es un numero de 8 digitos seguido de un "-" y luego nombre, poblacion,
etc... creo que lo importante son esos 8 digitos primeros.
Hice algo parecido con fichas de clientes en excel y pude conseguir
archivar las fichas en las subcarpetas
aunque la diferencia con lo que necesito ahora es que al mismo tiempo
abría la carpeta y archivaba la ficha.
Ahora es diferente porque las carpetas ya estan creadas...
Estoy pensando en un procedimiento que "metiera/archivara" en cada
subcarpeta cuyo nombre empieza por un numero de 8 digitos
p.e. "71000123" el correspondiente documento de word (formato RTF) cuyo
nombre empieza con ese mismo numero
es decir: "71000123-patatinpatatan.rtf" y asi sucesivamente.
Si es posible, cuando la subcarpeta no exitiera la creara con el mismo
nombre del documento word y archivara ese documento dentro tambien.
(con tratamiento de errores? ... eso seria ya lo maximo).




Respuesta Responder a este mensaje
#3 fermu [MVP Windows]
14/02/2008 - 10:50 | Informe spam
Jose escribió:
Hola Héctor:
Siento no haberme explicado mejor.




Hola José, me van a coser a gorrazos por lo que voy a decir, pero no me
puedo callar. Lo que estás haciendo es mala praxis en las news, porque
estás mareando tanto por Word como por Excel, y además desde Word ya te
han ofrecido una solución efectiva para llevar a cabo todo el proceso
con una simple linea de comandos que es la forma menos engorrosa y más
efectiva de llevar a cabo el proceso.
Responderte y ofrecer una contestación eficaz requiere tiempo que nadie
nos retribuye, no lo olvides para la próxima vez.

Saludos / Fernando M.
Fermu's Website - http://www.fermu.com
Registered Linux User #367696 - MS MVP Windows - Shell/User
La caridad bien entendida comienza por uno mismo (by Moni)
Respuesta Responder a este mensaje
#4 Monica May
14/02/2008 - 11:23 | Informe spam
Quieto parao fernando :D !!


ay dios :D !! si vale te doy la razon en que no se debe postear tanto y
marear tanto pero quietorrrrr !!!! que la solucion que le ofreci no sirve
para nada ya que hector tiene razon ahora lo explico el porque -!!-

Saludos
Monica


www.fermu.com
www.teladearana.es
"fermu [MVP Windows]" escribió en el mensaje de
noticias news:%
Jose escribió:
Hola Héctor:
Siento no haberme explicado mejor.




Hola José, me van a coser a gorrazos por lo que voy a decir, pero no me
puedo callar. Lo que estás haciendo es mala praxis en las news, porque
estás mareando tanto por Word como por Excel, y además desde Word ya te
han ofrecido una solución efectiva para llevar a cabo todo el proceso con
una simple linea de comandos que es la forma menos engorrosa y más
efectiva de llevar a cabo el proceso.
Responderte y ofrecer una contestación eficaz requiere tiempo que nadie
nos retribuye, no lo olvides para la próxima vez.

Saludos / Fernando M.
Fermu's Website - http://www.fermu.com
Registered Linux User #367696 - MS MVP Windows - Shell/User
La caridad bien entendida comienza por uno mismo (by Moni)
Respuesta Responder a este mensaje
#5 Monica May
14/02/2008 - 12:30 | Informe spam
hola,

Con esta ruta, tengo una carpeta: "Archivo general de clientes":
C:\Documents and Settings\José Rafael\Mis documentos\Archivo general de
clientes

En esta carpeta existen 827 subcarpetas cuyos nombres son largos (no mas
de 80 caracteres) y todos ellos empiezan con un número diferente y único
de 8 digitos por cada cliente.

En esta misma ubicación tengo 825 documentos word en formato RTF cuyos
nombres empiezan tambien con el codigo de cliente, es decir con un número
de 8 digitos que al formar parte de un nombre mas largo en realidad es una
cadena de texto (al igual que el nombre de las carpetas).



Bien para empezar comentarte que por favor no hagas suposiciones sobre lo
que realmente necesitas y te acerques y expliques exatamente lo que <<
realmente necesitas >> y con DATOS REALES ya que asi de esa manera
conseguiras lo que necesitas y si es posible claro esta ayudarte en tu
necesidad

Bien como nos comenta nuestro compañero Hector :-) y si has leido con
atencion lo que te comenta sobre tu consulta te habras parado a pensar -?-
en que logicamente no es posible lo que estas pidiendo tal cual nos estas
comentando en los hilos o post consultados , o tal cual yo estoy entendiendo
que es lo que necesitas ? ya que:

La ruta inicial tiene apox. >> 100 caracteres
Los archivos a mover tienen >> 80 caracteres
Las carpetas donde se han de incluir dichos archivos tienen otros 80
caracteres
con esto hacen 260 caracteres y ya si contamos las subcarpetas ya nos
ponemos en >> otros 80 caracteres ???

Luego en un prinicipio eran 365 archivos ahora ya son 825 [.RTF] -?-

luego tampoco le veo logica a poner semejante barbaridad de caracteres a
carpetas y archivos teniendo un sistema como tiene Office de organizacion de
archivos [excel u access ] que son un primor para la organizacion de
clientes, proveedores, etc

Usea se tal cual nos explicas [ hasta donde se y he entendido ] como que no
creo que fuera posible ni mediante VBE, ni scripts ni comandos [ MS-Dos ]


'[]

<< Explicacion del porque no funcionaria el comando que le ofreci en word >>

http://tinyurl.com/3bulwq

para mover archivos hubiera bastado dejar el comando [ Move ] perooooo
leyendo a hector ;-) !! me he avispado de que me he pasado por alto dos
detalles >>

1º no pare a mirar los caracteres :-( , en mis pruebas probe el comando con






for %M
in(C:\12345678912345678912345678912345678912345678912345678912345678912345678912345678
\*.*") Do @( move %X %%~dpnM)

y ya sin meter mas subcarpetas ni ruta completa el sistema ya me dicta >>

<< el sistema no puede hayar la ruta especificada >>

Usease por ese lado no funcionaria :-(

2º el comando solo funcionaria si las carpetas fueran mismo nombre que
archivo :-(

Por lo tanto, el comando solo funcionaria para nombres cortos y ademas mismo
nombre de archivo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida