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.
Podrias exponer el macro q usas para crear nuevo libro y el valor de la
celda [A1] q usas para cambiar el nombre de la hoja.
Creo q lo q ocurre es q tu macro ya tiene una rutina para crear un nuevo
libro. El mio tambien. Entonces pasa lo siguiente. Al crear tu macro el
libro "Libro X1" este se activa y se desactiva el "Libro X". Al mismo tiempo
mi macro coge el valor de la celda [A1] de la hoja activa del libro activo q
en este caso ya es "Libro X1" q probablemente tiene algo q no vale como
nombre de libro y por lo tanto produce el error (por cierto ?q error te
da?).
Saludos,
KL
"Mbaeijhapa" <Mbaei...@discussions.microsoft.com> wrote in message
news:A3ED139D-59CB-4F68...@microsoft.com...
> 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
> continuacion)
> me genera un error en la ultima linea.
>
> Sub Test()
> Dim Nombre As String
> Nombre = ActiveSheet.Range("A1") & ".xls"
> Workbooks.Add.SaveAs Nombre
> End Sub
>
> Esta instruccion me crea un libro en blanco y da un error en la linea
> "Workbooks.Add.SaveAs Nombre"
>
> Voy a tratar de explicarte mejor lo que necesito:
> Tengo un "Libro X" que, a traves 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 esta ingresado en la celda "A1" del "Libro
> X".
>
> KL, te agradezco la preocupacion por resolver el tema.
>
> Mbaeijhapa.
>
Sub FILTRO()
'
Application.ScreenUpdating = False
Sheets("REGISTROS").Visible = True
Sheets("REGISTROS").Select
Range("B2").Select
Selection.AutoFilter Field:=4, Criteria1:="SI"
Application.Goto Reference:="BASE"
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Columns("A:A").EntireColumn.AutoFit
Range("A1").Select
Kill "c:\Resolucion_1104\reso-1.xls"
ActiveWorkbook.SaveAs FileName:="C:\Resolucion_1104\reso-1.xls",
FileFormat _
:=xlNormal, Password:="", WriteResPassword:="",
ReadOnlyRecommended:= _
False, CreateBackup:=False
Windows("RES-1104.xls").Activate
Application.CutCopyMode = False
Range("A1").Select
Selection.AutoFilter Field:=4
ActiveWindow.SelectedSheets.Visible = False
Windows("reso-1.xls").Activate
Range("A1").Select
Dim EsteRango As String, Fila As Long
For Fila = 2 To Range("a65536").End(xlUp).Row
If EsteRango <> "" Then EsteRango = EsteRango & ","
EsteRango = EsteRango & "a" & Fila
Next
Range(EsteRango).EntireRow.Insert
Application.ScreenUpdating = True
End Sub
------------------------------------------------------------------------
"KL" escribió:
Mira a ver si el codigo de abajo hace lo q quieres hacer.
Saludos,
KL
'----------Inicio Codigo---------
Sub FILTRO()
Dim Copia As Workbook
Dim Nombre As String
Dim EsteRango As String
Dim Fila As Long
Application.ScreenUpdating = False
With ThisWorkbook.Sheets("REGISTROS")
Nombre = Left(.Range("A1"), Len(.Range("A1")) - 4)
.Range("A2").AutoFilter Field:=4, Criteria1:="SI"
.AutoFilter.Range.Copy
.EnableAutoFilter = False
End With
Set Copia = Workbooks.Add
With Copia.ActiveSheet
With .Range("A1")
.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
.EntireColumn.AutoFit
.Select
End With
Kill "c:\Resolucion_1104\reso-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
Application.ScreenUpdating = True
End Sub
'----------Fin Codigo---------
"Mbaeijhapa" <Mbaei...@discussions.microsoft.com> wrote in message
news:D768BE95-5463-49EA...@microsoft.com...
> Hola KL,
> Es tal cual como dices, mi macro ya tiene una rutina para crear un nuevo
> libro.
> A continuacion te expongo el macro que uso, ademas te informo que el valor
> de la celda "A1" del "Libro X" es "EXPORT200412.TXT" (quiero crear un
> archivo
> de texto con el "Libro X1"). Amigo, no soy un experto, soy un aficionado
> que
> va aprendiendo dia a dia gracias a la gran ayuda que me dan tu y todo el
> "KL" escribio:
Agradezco el tiempo que te has tomado para analizar mi macro y realizar uno
nuevo para ver si resolvia el tema; pero lamento decirte que no devuelve el
resultado que esperaba.
De todos modos, el macro que te he enviado funciona bien y devuelve el
resultado que espero, solamente le quiero agregar una instrucción 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".
Igualmente te estoy muy agradecido, y si se te ocurre algo más, será
bienvenido.
Saludos
Mbaeijhapa.
"KL" escribió:
>...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
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ó:
> 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_1104\reso-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
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
KL
"Mbaeijhapa" <Mbaei...@discussions.microsoft.com> wrote in message
news:F7386E09-F294-492D...@microsoft.com...
> 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:
Gracias.
Mbaeijhapa.
"KL" escribió: