Archivar fichas excel en carpetas

08/02/2008 - 07:31 por Jose | Informe spam
Buenos días:
Voy a proponer al foro que me ayude a lo siguiente:
Tengo un Libro "Listado de carpetas de clientes" -hoja 1-A1:A827 con 827
carpetas de clientes que tienen la siguiente estructura de nombre:
<Nº de cliente-Nombre del cliente_codigo postal+espacio+nombre
poblacion-referencia agente>
He aqui un ejemplo:

71001161-Ferreteria El Xerrac,S.L._46970 Alacuas-E43

De otro lado tengo un libro "Listado nº 9 de todos los clientes al 10-1-08",
una hoja"Base de datos 10-1-08" y otra hoja "Ficha"
Ahora expongo un código que me permite imprimir las 827 fichas:

Sub Imprimirfichasdeclientes()
'

Dim N As Integer
Dim x As Integer, contador
On Error Resume Next
N = InputBox("Introduce el código de la primera ficha a imprimir", "Primer
número", "1") 'se podría obviar el InputBox

x = InputBox("Introduce el código de la última ficha a imprimir", "Último
número", "827") 'se podría obviar el InputBox
contador = 1
Y = InputBox("¿Cancelar impresión?", "si quiere cancelar intruzca un 0, sino
1", "1") 'se podría obviar el InputBox
If Y = 0 Then Exit Sub 'se podría obviar el InputBox
Sheets("Plantilla").Select
For N = N To x

Range("J1") = N

If Y = 1 Then Range("I1").Value = "k" Else Range("I1").Value = ""
If Range("I1").Value = "k" Then
'MsgBox ("OK")


ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

contador = contador + 1
End If
If N = x + 1 Then Exit Sub

Next
MsgBox ("el nº de fichas es: ") & contador - 1
End Sub

Lo que necesito es:
Que de la misma manera (o similar, diferente, etc.) que imprime las fichas,
me guarde la ficha correspondiente de cada cliente en la carpeta que le
corresponda guiados por el Nº de cliente que en la hoja "Ficha" se encuentra
en la celda F13 , en la hoja "Base de datos 10-1-08" en la columna L3:L29 y
la carpeta de archivo comienza por el Nº de cliente como ha quedado dicho al
principio.

Las carpeta de archivo que contiene las 827 carpetas de clientes se llama
"Archivo general de clientes" y se encuentra en "C\Mis documentos\"

Para mi será de gran ayuda vuestra colaboración. Gracias.
Saludos
José Rafael

Preguntas similare

Leer las respuestas

#1 José Rafael
08/02/2008 - 14:38 | Informe spam
Por cierto, se me olvidó decir que la ficha ha de ser un archivo "plano", es
decir sin formulas, referencias ó vínculos (pegado especial valores).
Saludos y gracias de nuevo

José Rafael


"Jose" escribió en el mensaje
news:
Buenos días:
Voy a proponer al foro que me ayude a lo siguiente:
Tengo un Libro "Listado de carpetas de clientes" -hoja 1-A1:A827 con 827
carpetas de clientes que tienen la siguiente estructura de nombre:
<Nº de cliente-Nombre del cliente_codigo postal+espacio+nombre
poblacion-referencia agente>
He aqui un ejemplo:

71001161-Ferreteria El Xerrac,S.L._46970 Alacuas-E43

De otro lado tengo un libro "Listado nº 9 de todos los clientes al
10-1-08", una hoja"Base de datos 10-1-08" y otra hoja "Ficha"
Ahora expongo un código que me permite imprimir las 827 fichas:

Sub Imprimirfichasdeclientes()
'

Dim N As Integer
Dim x As Integer, contador
On Error Resume Next
N = InputBox("Introduce el código de la primera ficha a imprimir", "Primer
número", "1") 'se podría obviar el InputBox

x = InputBox("Introduce el código de la última ficha a imprimir", "Último
número", "827") 'se podría obviar el InputBox
contador = 1
Y = InputBox("¿Cancelar impresión?", "si quiere cancelar intruzca un 0,
sino 1", "1") 'se podría obviar el InputBox
If Y = 0 Then Exit Sub 'se podría obviar el InputBox
Sheets("Plantilla").Select
For N = N To x

Range("J1") = N

If Y = 1 Then Range("I1").Value = "k" Else Range("I1").Value = ""
If Range("I1").Value = "k" Then
'MsgBox ("OK")


ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

contador = contador + 1
End If
If N = x + 1 Then Exit Sub

Next
MsgBox ("el nº de fichas es: ") & contador - 1
End Sub

Lo que necesito es:
Que de la misma manera (o similar, diferente, etc.) que imprime las
fichas, me guarde la ficha correspondiente de cada cliente en la carpeta
que le corresponda guiados por el Nº de cliente que en la hoja "Ficha" se
encuentra en la celda F13 , en la hoja "Base de datos 10-1-08" en la
columna L3:L29 y la carpeta de archivo comienza por el Nº de cliente como
ha quedado dicho al principio.

Las carpeta de archivo que contiene las 827 carpetas de clientes se llama
"Archivo general de clientes" y se encuentra en "C\Mis documentos\"

Para mi será de gran ayuda vuestra colaboración. Gracias.
Saludos
José Rafael




Respuesta Responder a este mensaje
#2 Jose
09/02/2008 - 01:26 | Informe spam
Hola amigos:
He estado trabajando con el código que decia mas abajo que necesito y tengo
este nuevo código para que alguien lo someta a análisis, si es posible, por
favor.
Tengo dos problemas:a) que guarde la ficha en la carpeta correspondiente
(tal y como está ahora guarda la ficha y la carpeta en el mismo directorio
es decir en la carpeta "Archivo general de clientes")
Debería ser que primero crea la carpeta y a continuación introduce la ficha
(libro que se llamara "Ficha nº N")
El otro problemas es que cuando salen las preguntas desea guardar el libro ó
desea eliminar el libro se conteste el codigo que si automaticamente.
Saludos y gracias
Jose Rafael
El código:
Sub grabafichasdeclientes()
'
Dim Z As Integer
Dim N As Integer
Dim Y As Integer
Dim x As Integer, contador
Dim carpeta As String
On Error Resume Next
N = InputBox("Introduce el código de la primera ficha a imprimir", "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 a imprimir", "Ú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
Sheets("Ficha").Select
Range("J1") = N



ActiveWindow.Select
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)
Columns("A:J").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
ChDir "C:\Documents and Settings\José Rafael\Mis documentos\Archivo
general de clientes\carpeta\"
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\José Rafael\Mis documentos\Archivo
general de clientes\Ficha nº " & N & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False 'FALTA GUARDAR EL
ARCHIVO EN LA CARPETA CORRESPONDIENTE
Range("F6").Select
Sheets("Hoja1").Select

Sheets("Hoja1").Name = "Ficha nº " & N
Sheets(Array("Hoja2", "Hoja3")).Select
ActiveWindow.SelectedSheets.Delete '¿Como se hace para no tener que
hacer <enter> cada vez? es : Chr (10)
ActiveWorkbook.Close '¿Como se hace para no tener que hacer <enter>
cada vez? es : Chr (10)
Sheets("Ficha").Select
Range("A1").Select
contador = contador + 1

If N = x + 1 Then Exit Sub
N = N + 1

Next
MsgBox ("el nº de fichas es: ") & contador - 1
End Sub


















"José Rafael" escribió en el mensaje
news:%23U5%
Por cierto, se me olvidó decir que la ficha ha de ser un archivo "plano",
es decir sin formulas, referencias ó vínculos (pegado especial valores).
Saludos y gracias de nuevo

José Rafael


"Jose" escribió en el mensaje
news:
Buenos días:
Voy a proponer al foro que me ayude a lo siguiente:
Tengo un Libro "Listado de carpetas de clientes" -hoja 1-A1:A827 con 827
carpetas de clientes que tienen la siguiente estructura de nombre:
<Nº de cliente-Nombre del cliente_codigo postal+espacio+nombre
poblacion-referencia agente>
He aqui un ejemplo:

71001161-Ferreteria El Xerrac,S.L._46970 Alacuas-E43

De otro lado tengo un libro "Listado nº 9 de todos los clientes al
10-1-08", una hoja"Base de datos 10-1-08" y otra hoja "Ficha"
Ahora expongo un código que me permite imprimir las 827 fichas:

Sub Imprimirfichasdeclientes()
'

Dim N As Integer
Dim x As Integer, contador
On Error Resume Next
N = InputBox("Introduce el código de la primera ficha a imprimir",
"Primer número", "1") 'se podría obviar el InputBox

x = InputBox("Introduce el código de la última ficha a imprimir", "Último
número", "827") 'se podría obviar el InputBox
contador = 1
Y = InputBox("¿Cancelar impresión?", "si quiere cancelar intruzca un 0,
sino 1", "1") 'se podría obviar el InputBox
If Y = 0 Then Exit Sub 'se podría obviar el InputBox
Sheets("Plantilla").Select
For N = N To x

Range("J1") = N

If Y = 1 Then Range("I1").Value = "k" Else Range("I1").Value = ""
If Range("I1").Value = "k" Then
'MsgBox ("OK")


ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

contador = contador + 1
End If
If N = x + 1 Then Exit Sub

Next
MsgBox ("el nº de fichas es: ") & contador - 1
End Sub

Lo que necesito es:
Que de la misma manera (o similar, diferente, etc.) que imprime las
fichas, me guarde la ficha correspondiente de cada cliente en la carpeta
que le corresponda guiados por el Nº de cliente que en la hoja "Ficha" se
encuentra en la celda F13 , en la hoja "Base de datos 10-1-08" en la
columna L3:L29 y la carpeta de archivo comienza por el Nº de cliente como
ha quedado dicho al principio.

Las carpeta de archivo que contiene las 827 carpetas de clientes se llama
"Archivo general de clientes" y se encuentra en "C\Mis documentos\"

Para mi será de gran ayuda vuestra colaboración. Gracias.
Saludos
José Rafael








Respuesta Responder a este mensaje
#3 Jose
10/02/2008 - 01:49 | Informe spam
Hola foro:
Ya tengo lo que necesitaba... una pasada de ahorro de trabajo pues grabo 827
fichas en sus respectivas carpetas que previamente he abierto con el
procedimiento. Gracias a todos y especialmente a Iván por el último
"empujoncito"...
Saludos
José Rafael




"Jose" escribió en el mensaje
news:%
Hola amigos:
He estado trabajando con el código que decia mas abajo que necesito y
tengo este nuevo código para que alguien lo someta a análisis, si es
posible, por favor.
Tengo dos problemas:a) que guarde la ficha en la carpeta correspondiente
(tal y como está ahora guarda la ficha y la carpeta en el mismo directorio
es decir en la carpeta "Archivo general de clientes")
Debería ser que primero crea la carpeta y a continuación introduce la
ficha (libro que se llamara "Ficha nº N")
El otro problemas es que cuando salen las preguntas desea guardar el libro
ó desea eliminar el libro se conteste el codigo que si automaticamente.
Saludos y gracias
Jose Rafael
El código:
Sub grabafichasdeclientes()
'
Dim Z As Integer
Dim N As Integer
Dim Y As Integer
Dim x As Integer, contador
Dim carpeta As String
On Error Resume Next
N = InputBox("Introduce el código de la primera ficha a imprimir", "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 a imprimir", "Ú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
Sheets("Ficha").Select
Range("J1") = N



ActiveWindow.Select
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)
Columns("A:J").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
ChDir "C:\Documents and Settings\José Rafael\Mis documentos\Archivo
general de clientes\carpeta\"
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\José Rafael\Mis documentos\Archivo
general de clientes\Ficha nº " & N & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False 'FALTA GUARDAR EL
ARCHIVO EN LA CARPETA CORRESPONDIENTE
Range("F6").Select
Sheets("Hoja1").Select

Sheets("Hoja1").Name = "Ficha nº " & N
Sheets(Array("Hoja2", "Hoja3")).Select
ActiveWindow.SelectedSheets.Delete '¿Como se hace para no tener que
hacer <enter> cada vez? es : Chr (10)
ActiveWorkbook.Close '¿Como se hace para no tener que hacer <enter>
cada vez? es : Chr (10)
Sheets("Ficha").Select
Range("A1").Select
contador = contador + 1

If N = x + 1 Then Exit Sub
N = N + 1

Next
MsgBox ("el nº de fichas es: ") & contador - 1
End Sub


















"José Rafael" escribió en el mensaje
news:%23U5%
Por cierto, se me olvidó decir que la ficha ha de ser un archivo "plano",
es decir sin formulas, referencias ó vínculos (pegado especial valores).
Saludos y gracias de nuevo

José Rafael


"Jose" escribió en el mensaje
news:
Buenos días:
Voy a proponer al foro que me ayude a lo siguiente:
Tengo un Libro "Listado de carpetas de clientes" -hoja 1-A1:A827 con 827
carpetas de clientes que tienen la siguiente estructura de nombre:
<Nº de cliente-Nombre del cliente_codigo postal+espacio+nombre
poblacion-referencia agente>
He aqui un ejemplo:

71001161-Ferreteria El Xerrac,S.L._46970 Alacuas-E43

De otro lado tengo un libro "Listado nº 9 de todos los clientes al
10-1-08", una hoja"Base de datos 10-1-08" y otra hoja "Ficha"
Ahora expongo un código que me permite imprimir las 827 fichas:

Sub Imprimirfichasdeclientes()
'

Dim N As Integer
Dim x As Integer, contador
On Error Resume Next
N = InputBox("Introduce el código de la primera ficha a imprimir",
"Primer número", "1") 'se podría obviar el InputBox

x = InputBox("Introduce el código de la última ficha a imprimir",
"Último número", "827") 'se podría obviar el InputBox
contador = 1
Y = InputBox("¿Cancelar impresión?", "si quiere cancelar intruzca un 0,
sino 1", "1") 'se podría obviar el InputBox
If Y = 0 Then Exit Sub 'se podría obviar el InputBox
Sheets("Plantilla").Select
For N = N To x

Range("J1") = N

If Y = 1 Then Range("I1").Value = "k" Else Range("I1").Value = ""
If Range("I1").Value = "k" Then
'MsgBox ("OK")


ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

contador = contador + 1
End If
If N = x + 1 Then Exit Sub

Next
MsgBox ("el nº de fichas es: ") & contador - 1
End Sub

Lo que necesito es:
Que de la misma manera (o similar, diferente, etc.) que imprime las
fichas, me guarde la ficha correspondiente de cada cliente en la carpeta
que le corresponda guiados por el Nº de cliente que en la hoja "Ficha"
se encuentra en la celda F13 , en la hoja "Base de datos 10-1-08" en la
columna L3:L29 y la carpeta de archivo comienza por el Nº de cliente
como ha quedado dicho al principio.

Las carpeta de archivo que contiene las 827 carpetas de clientes se
llama "Archivo general de clientes" y se encuentra en "C\Mis
documentos\"

Para mi será de gran ayuda vuestra colaboración. Gracias.
Saludos
José Rafael












email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida