Para "KL" - Nombrar archivos (continuación)

17/02/2005 - 16:37 por Mbaeijhapa | Informe spam
Hola KL,
Disculpa si no me he expresado bien en mi requerimiento del 16/02, pero
resulta que las instrucciones que me has enviado (que escribo a continuación)
me genera un error en la última linea.

Sub Test()
Dim Nombre As String
Nombre = ActiveSheet.Range("A1") & ".xls"
Workbooks.Add.SaveAs Nombre
End Sub

Esta instrucción me crea un libro en blanco y dá un error en la linea
"Workbooks.Add.SaveAs Nombre"

Voy a tratar de explicarte mejor lo que necesito:
Tengo un "Libro X" que, a través de una macro, me genera otro "Libro X1" que
contiene datos procesados del "Libro X", lo que necesito es que el "Libro X1"
sea grabado con un nombre que está ingresado en la celda "A1" del "Libro X".

KL, te agradezco la preocupación por resolver el tema.

Mbaeijhapa.

Preguntas similare

Leer las respuestas

#6 Mbaeijhapa
17/02/2005 - 23:15 | Informe spam
KL,
Tu macro genera el "Libro X1" con datos procesados del "Libro X" pero en
lugar de llevar solamente una sola columna de los datos filtrados, lleva todo
los datos filtrados con sus respectivos títulos, y además graba el "Libro X1"
con el nombre que sale de los primeros 4 digitos de la celda "A1" del "Libro
X1".

Yo necesito que lleve los datos de una sola columna del "Libro X" y sin el
título (esto lo genera bien mi macro), y que grabe el Libro generado ("Libro
X1") con el nombre del dato que se encuentra en la celda "A1" del "Libro X"
(esto no genera mi macro).

Sino se entiende, mañana seguimos porque ahora me tengo que ir :(

Gracias. Saludos y hasta mañana.
Mbaeijhapa.

"KL" escribió:

Hola Mbaeijhapa,

>...pero lamento decirte que no devuelve el
> resultado que esperaba.

Te importaria enviarme el libro o explicarme con mas detalle en que
exactamente mi macro no hace lo q buscas - me tienes intrigado. Es q hice
pruebas y me devolvia unos resultados q tenian sentido.

>...solamente le quiero agregar una instruccion que grabe
> el "Libro X1" que genera, con el nombre del dato ingresado en la celda
> "A1"
> del "Libro X" (libro donde se encuentra el macro). Es decir, si en la
> celda
> "A1"("Libro X") el dato ingresado es "ENERO", quiero que el "Libro X1" se
> llame "ENERO.TXT".

Estas lineas deberian indicarte el camino

Nombre=Workbooks("Libro X").Sheets(1).Range("A1").Value
Workbooks("Libro X1").SaveAs Nombre & ".txt"

Saludos,
KL



Respuesta Responder a este mensaje
#7 KL
18/02/2005 - 00:10 | Informe spam
Hola Mbaeijhapa,

Tu macro genera el "Libro X1" con datos procesados del "Libro X" pero en
lugar de llevar solamente una sola columna de los datos filtrados, lleva
todo
los datos filtrados con sus respectivos titulos, y ademas graba el "Libro
X1"
con el nombre que sale de los primeros 4 digitos de la celda "A1" del
"Libro
X1".




OK. Prueba el codigo a continuacion. Solo tienes q cambiar el numero de la
columna por el deseado en la siguiente linea:
.Offset(1, 0).Columns(2).Copy

...esto lo genera bien mi macro



Aunque tu macro consiga los resultados buscados, hace muchas operaciones
innecesarias lo cual lo hace ineficiente. Por eso te lo he modificado.

Saludos,
KL

Sub FILTRO()
Dim Copia As Workbook, Fila As Long
Dim Nombre As String, EsteRango As String
Application.ScreenUpdating = False
With ThisWorkbook.Sheets("REGISTROS")
Nombre = .Range("A1")
.Range("A2").AutoFilter Field:=4, Criteria1:="SI"
With .AutoFilter.Range
.Resize(.Rows.Count - 1, .Columns.Count) _
.Offset(1, 0).Columns(2).Copy
End With
End With
Set Copia = Workbooks.Add
With Copia.Sheets(1)
With .Range("A1")
.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
.EntireColumn.AutoFit
.Select
End With
Kill "c:\Resolucion_1104eso-1.xls"
.Parent.SaveAs "c:\Resolucion_1104\" & Nombre & ".xls"
For Fila = 2 To .Range("a65536").End(xlUp).Row
If EsteRango <> "" Then EsteRango = EsteRango & ","
EsteRango = EsteRango & "a" & Fila
Next
.Range(EsteRango).EntireRow.Insert
End With
ThisWorkbook.Sheets("REGISTROS").Range("A2").AutoFilter Field:=4
Application.ScreenUpdating = True
End Sub
Respuesta Responder a este mensaje
#8 Mbaeijhapa
18/02/2005 - 13:49 | Informe spam
Buen día KL,

Me dá mucho gusto prender la PC y encontrar una repuesta a lo solicitado,
sea correcta o no.
No quiero ofenderte, al contrario, estoy muy agradecido por la paciencia con
que has tratado el tema, pero yo creo (puedo estar equivocado) que "la
eficiencia se vé con los resultados y que la excelencia es cuando los
resultados se logran por el camino más corto".
Mira, entiendo que el código que me envias me puede copiar solamente la
columna que yo le indique del rango filtrado, eso estaría muy bien, pero lo
que realmente necesito, más bien es lo único que necesito, es " ¡¡¡ Grabar el
nuevo Libro X1" con un nombre que sale de la celda "A1" del "Libro X" (en
donde se encuentra la macro que genera el "Libro X1", y donde quiero agregar
el código correspondiente para grabar) !!!"
Es muy dificil explicar correctamente lo que uno necesita, pero es más
dificil interpretar lo que uno pide, más aún a la distancia y sin tener los
archivos de los Libros en questión.
Quiero decirte que de este "ida y vuelta" he sacado valiosas conclusiones,
por lo que te estoy muy agradecido.
Yo doy por cerrado el tema.

Saludos.
Mbaeijhapa.


"KL" escribió:

Hola Mbaeijhapa,

> Tu macro genera el "Libro X1" con datos procesados del "Libro X" pero en
> lugar de llevar solamente una sola columna de los datos filtrados, lleva
> todo
> los datos filtrados con sus respectivos titulos, y ademas graba el "Libro
> X1"
> con el nombre que sale de los primeros 4 digitos de la celda "A1" del
> "Libro
> X1".


OK. Prueba el codigo a continuacion. Solo tienes q cambiar el numero de la
columna por el deseado en la siguiente linea:
..Offset(1, 0).Columns(2).Copy

> ...esto lo genera bien mi macro

Aunque tu macro consiga los resultados buscados, hace muchas operaciones
innecesarias lo cual lo hace ineficiente. Por eso te lo he modificado.

Saludos,
KL

Sub FILTRO()
Dim Copia As Workbook, Fila As Long
Dim Nombre As String, EsteRango As String
Application.ScreenUpdating = False
With ThisWorkbook.Sheets("REGISTROS")
Nombre = .Range("A1")
.Range("A2").AutoFilter Field:=4, Criteria1:="SI"
With .AutoFilter.Range
.Resize(.Rows.Count - 1, .Columns.Count) _
.Offset(1, 0).Columns(2).Copy
End With
End With
Set Copia = Workbooks.Add
With Copia.Sheets(1)
With .Range("A1")
.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
.EntireColumn.AutoFit
.Select
End With
Kill "c:\Resolucion_1104eso-1.xls"
.Parent.SaveAs "c:\Resolucion_1104\" & Nombre & ".xls"
For Fila = 2 To .Range("a65536").End(xlUp).Row
If EsteRango <> "" Then EsteRango = EsteRango & ","
EsteRango = EsteRango & "a" & Fila
Next
.Range(EsteRango).EntireRow.Insert
End With
ThisWorkbook.Sheets("REGISTROS").Range("A2").AutoFilter Field:=4
Application.ScreenUpdating = True
End Sub



Respuesta Responder a este mensaje
#9 KL
18/02/2005 - 14:35 | Informe spam
Vale, cerramos el tema. Solo decirte q la respuesta a tu pregunta principal
(y la unica) aparece en 4 de mis postings en este hilo (probablemento la has
estado pasando por alto todo este tiempo) y la propuesta de modificar el
codigo era realmente un obsequio adicional (sabes como pasta dental - !ahora
un 33% mas gratis!). Solo tienes q coger las lineas de codigo relevantes e
insertarlas en tu macro con pequenos ajustes.

KL

"Mbaeijhapa" wrote in message
news:
Buen dia KL,

Me da mucho gusto prender la PC y encontrar una repuesta a lo solicitado,
sea correcta o no.
No quiero ofenderte, al contrario, estoy muy agradecido por la paciencia
con
que has tratado el tema, pero yo creo (puedo estar equivocado) que "la
eficiencia se ve con los resultados y que la excelencia es cuando los
resultados se logran por el camino mas corto".
Mira, entiendo que el codigo que me envias me puede copiar solamente la
columna que yo le indique del rango filtrado, eso estaria muy bien, pero
lo
que realmente necesito, mas bien es lo unico que necesito, es " ??? Grabar
el
nuevo Libro X1" con un nombre que sale de la celda "A1" del "Libro X" (en
donde se encuentra la macro que genera el "Libro X1", y donde quiero
agregar
el codigo correspondiente para grabar) !!!"
Es muy dificil explicar correctamente lo que uno necesita, pero es mas
dificil interpretar lo que uno pide, mas aun a la distancia y sin tener
los
archivos de los Libros en question.
Quiero decirte que de este "ida y vuelta" he sacado valiosas conclusiones,
por lo que te estoy muy agradecido.
Yo doy por cerrado el tema.

Saludos.
Mbaeijhapa.


"KL" escribio:

Hola Mbaeijhapa,

> Tu macro genera el "Libro X1" con datos procesados del "Libro X" pero
> en
> lugar de llevar solamente una sola columna de los datos filtrados,
> lleva
> todo
> los datos filtrados con sus respectivos titulos, y ademas graba el
> "Libro
> X1"
> con el nombre que sale de los primeros 4 digitos de la celda "A1" del
> "Libro
> X1".


OK. Prueba el codigo a continuacion. Solo tienes q cambiar el numero de
la
columna por el deseado en la siguiente linea:
..Offset(1, 0).Columns(2).Copy

> ...esto lo genera bien mi macro

Aunque tu macro consiga los resultados buscados, hace muchas operaciones
innecesarias lo cual lo hace ineficiente. Por eso te lo he modificado.

Saludos,
KL

Sub FILTRO()
Dim Copia As Workbook, Fila As Long
Dim Nombre As String, EsteRango As String
Application.ScreenUpdating = False
With ThisWorkbook.Sheets("REGISTROS")
Nombre = .Range("A1")
.Range("A2").AutoFilter Field:=4, Criteria1:="SI"
With .AutoFilter.Range
.Resize(.Rows.Count - 1, .Columns.Count) _
.Offset(1, 0).Columns(2).Copy
End With
End With
Set Copia = Workbooks.Add
With Copia.Sheets(1)
With .Range("A1")
.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
.EntireColumn.AutoFit
.Select
End With
Kill "c:\Resolucion_1104eso-1.xls"
.Parent.SaveAs "c:\Resolucion_1104\" & Nombre & ".xls"
For Fila = 2 To .Range("a65536").End(xlUp).Row
If EsteRango <> "" Then EsteRango = EsteRango & ","
EsteRango = EsteRango & "a" & Fila
Next
.Range(EsteRango).EntireRow.Insert
End With
ThisWorkbook.Sheets("REGISTROS").Range("A2").AutoFilter Field:=4
Application.ScreenUpdating = True
End Sub



Respuesta Responder a este mensaje
#10 Mbaeijhapa
18/02/2005 - 15:07 | Informe spam
Si, es verdad, tengo q ajustar algunas lineas del código que me has enviado
al principio. Siempre estuve trabajando sobre ello, nada más que, como no
manejo muy bien el tema, seguramente estoy creando lineas innecesarias (como
correctamente lo has dicho) que hace que me lleve más tiempo de lo normal.
Pero ya estoy cerca del objetivo !

Gracias.
Mbaeijhapa.

"KL" escribió:

Vale, cerramos el tema. Solo decirte q la respuesta a tu pregunta principal
(y la unica) aparece en 4 de mis postings en este hilo (probablemento la has
estado pasando por alto todo este tiempo) y la propuesta de modificar el
codigo era realmente un obsequio adicional (sabes como pasta dental - !ahora
un 33% mas gratis!). Solo tienes q coger las lineas de codigo relevantes e
insertarlas en tu macro con pequenos ajustes.

KL

"Mbaeijhapa" wrote in message
news:
> Buen dia KL,
>
> Me da mucho gusto prender la PC y encontrar una repuesta a lo solicitado,
> sea correcta o no.
> No quiero ofenderte, al contrario, estoy muy agradecido por la paciencia
> con
> que has tratado el tema, pero yo creo (puedo estar equivocado) que "la
> eficiencia se ve con los resultados y que la excelencia es cuando los
> resultados se logran por el camino mas corto".
> Mira, entiendo que el codigo que me envias me puede copiar solamente la
> columna que yo le indique del rango filtrado, eso estaria muy bien, pero
> lo
> que realmente necesito, mas bien es lo unico que necesito, es " ??? Grabar
> el
> nuevo Libro X1" con un nombre que sale de la celda "A1" del "Libro X" (en
> donde se encuentra la macro que genera el "Libro X1", y donde quiero
> agregar
> el codigo correspondiente para grabar) !!!"
> Es muy dificil explicar correctamente lo que uno necesita, pero es mas
> dificil interpretar lo que uno pide, mas aun a la distancia y sin tener
> los
> archivos de los Libros en question.
> Quiero decirte que de este "ida y vuelta" he sacado valiosas conclusiones,
> por lo que te estoy muy agradecido.
> Yo doy por cerrado el tema.
>
> Saludos.
> Mbaeijhapa.
>
>
> "KL" escribio:
>
>> Hola Mbaeijhapa,
>>
>> > Tu macro genera el "Libro X1" con datos procesados del "Libro X" pero
>> > en
>> > lugar de llevar solamente una sola columna de los datos filtrados,
>> > lleva
>> > todo
>> > los datos filtrados con sus respectivos titulos, y ademas graba el
>> > "Libro
>> > X1"
>> > con el nombre que sale de los primeros 4 digitos de la celda "A1" del
>> > "Libro
>> > X1".
>>
>>
>> OK. Prueba el codigo a continuacion. Solo tienes q cambiar el numero de
>> la
>> columna por el deseado en la siguiente linea:
>> ..Offset(1, 0).Columns(2).Copy
>>
>> > ...esto lo genera bien mi macro
>>
>> Aunque tu macro consiga los resultados buscados, hace muchas operaciones
>> innecesarias lo cual lo hace ineficiente. Por eso te lo he modificado.
>>
>> Saludos,
>> KL
>>
>> Sub FILTRO()
>> Dim Copia As Workbook, Fila As Long
>> Dim Nombre As String, EsteRango As String
>> Application.ScreenUpdating = False
>> With ThisWorkbook.Sheets("REGISTROS")
>> Nombre = .Range("A1")
>> .Range("A2").AutoFilter Field:=4, Criteria1:="SI"
>> With .AutoFilter.Range
>> .Resize(.Rows.Count - 1, .Columns.Count) _
>> .Offset(1, 0).Columns(2).Copy
>> End With
>> End With
>> Set Copia = Workbooks.Add
>> With Copia.Sheets(1)
>> With .Range("A1")
>> .PasteSpecial Paste:=xlValues
>> Application.CutCopyMode = False
>> .EntireColumn.AutoFit
>> .Select
>> End With
>> Kill "c:\Resolucion_1104eso-1.xls"
>> .Parent.SaveAs "c:\Resolucion_1104\" & Nombre & ".xls"
>> For Fila = 2 To .Range("a65536").End(xlUp).Row
>> If EsteRango <> "" Then EsteRango = EsteRango & ","
>> EsteRango = EsteRango & "a" & Fila
>> Next
>> .Range(EsteRango).EntireRow.Insert
>> End With
>> ThisWorkbook.Sheets("REGISTROS").Range("A2").AutoFilter Field:=4
>> Application.ScreenUpdating = True
>> End Sub
>>
>>
>>



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