Necesito ayuda para una macro

19/04/2007 - 19:53 por Altex | Informe spam
Hola a todos, primero de todo queria agradecerles el que al menos hayan
accedido a leer mi "pequeño" problema.

En el tema de Excel soy autodidacta, supongo que como casi todos, asi que
llevo ya unos dias intentando buscar por internet y en estos foros una
solucion a mi problema. He encontrado algunos ejemplos que he intentado
adaptar a mis necesidades, pero no lo consigo.

Les cuento mi escenario:

Tengo un libro de excel mediante el que calculo el precio de un producto,
el precio de ese producto final viene dado por la composicion de varios
articulos que tienen un precio que se coge de otras hojas en otros
libros. En este libro tambien tengo otras hojas que me sirven para sacar
un resumen de la composicion de ese producto que uso para enviar por fax.

La cuestion que llevo intentando resolver varios dias es que me gustaria
poder guardar mediante una macro esas dos hojas 'hoja1' y 'hoja2', que en
principio estan protegidas, en otro libro, respetando el formato y los
valores pero sin que se guarden los vinculos con otras hojas. Ese 'nuevo
libro' deberia de tener un nombre que viniese dado por dos datos que
cogeria de dos celdas dentro de la 'hoja1' y que ese pudiese guardarlo
donde yo quisiera, algo asi como la opcion 'Guardar como...'

He probado varios codigos que he encontrado por internet, al final llego
a un camino sin salida y siempre termino bloqueado, asi que os pido
vuestra ayuda para ver si podeis orientarme un poco como lo podria hacer.

Sub Guardar()
Sheets("Hoja2").Unprotect
Sheets("Hoja1").Unprotect
Sheets(Array("Hoja1", "Hoja2")).Select
Sheets("Hoja2").Activate
Sheets(Array("Hoja1", "Hoja2")).Copy
Sheets(Array("Hoja1", "Hoja2")).Select
Sheets("Hoja1").Activate
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:
=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=Environ("USERPROFILE") &
"\Escritorio\Mi libro.xls"
End Sub

Con este codigo consigo que me copie las dos hojas en otro libro y que me
lo guarde en el escritorio con un nombre predefinido, pero no se si esta
sera la mejor manera, ademas que no puedo poner el nombre que yo quiero
ni guardarlo donde yo le diga.

Si es posible, me gustaria que me indicarais como podria hacer para, en
la 'hoja1' copiar solo un rango de celdas con sus formatos y demas.

Un saludo y de nuevo muchas gracias por leer todo este rollo.

Preguntas similare

Leer las respuestas

#1 marbarru
19/04/2007 - 21:19 | Informe spam
Primer que nada y como cualquier problema en la vida, hay que
dividirlo en problemas mas pequeños y luego a eso "problemitas"
buscarles solucion.

Ahora, bien tu problema no es tan grave y se podrian hacer varias
cosas. Se puede tomar cualquier parte del libro pegarlo en otro libro
y salvarlo donde usted lo desee. Para seleccionar la ubicación se
podría invocar el cuadro de diálogo de "Guardar como" para que usted
decida en ese mismo momento donde guardarlo. Ademas tambien se puede
copiar cualquier hoja a un libro nuevo, quitarle las referencias y
luego salvarlo donde sea requerido utilizando "Guardar como". Como
todo es posible no se cual solución le quede mas cómoda, si a mi me
pregunta prefiero copiar las hojas enteras y luego salvar el libro.

Si gusta indiqueme su eleccion y vamos creando el código.

Marco Barboza - San Jose, Costa Rica

On Apr 19, 11:53 am, Altex wrote:
Hola a todos, primero de todo queria agradecerles el que al menos hayan
accedido a leer mi "pequeño" problema.

En el tema de Excel soy autodidacta, supongo que como casi todos, asi que
llevo ya unos dias intentando buscar por internet y en estos foros una
solucion a mi problema. He encontrado algunos ejemplos que he intentado
adaptar a mis necesidades, pero no lo consigo.

Les cuento mi escenario:

Tengo un libro de excel mediante el que calculo el precio de un producto,
el precio de ese producto final viene dado por la composicion de varios
articulos que tienen un precio que se coge de otras hojas en otros
libros. En este libro tambien tengo otras hojas que me sirven para sacar
un resumen de la composicion de ese producto que uso para enviar por fax.

La cuestion que llevo intentando resolver varios dias es que me gustaria
poder guardar mediante una macro esas dos hojas 'hoja1' y 'hoja2', que en
principio estan protegidas, en otro libro, respetando el formato y los
valores pero sin que se guarden los vinculos con otras hojas. Ese 'nuevo
libro' deberia de tener un nombre que viniese dado por dos datos que
cogeria de dos celdas dentro de la 'hoja1' y que ese pudiese guardarlo
donde yo quisiera, algo asi como la opcion 'Guardar como...'

He probado varios codigos que he encontrado por internet, al final llego
a un camino sin salida y siempre termino bloqueado, asi que os pido
vuestra ayuda para ver si podeis orientarme un poco como lo podria hacer.

Sub Guardar()
Sheets("Hoja2").Unprotect
Sheets("Hoja1").Unprotect
Sheets(Array("Hoja1", "Hoja2")).Select
Sheets("Hoja2").Activate
Sheets(Array("Hoja1", "Hoja2")).Copy
Sheets(Array("Hoja1", "Hoja2")).Select
Sheets("Hoja1").Activate
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:
=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=Environ("USERPROFILE") &
"\Escritorio\Mi libro.xls"
End Sub

Con este codigo consigo que me copie las dos hojas en otro libro y que me
lo guarde en el escritorio con un nombre predefinido, pero no se si esta
sera la mejor manera, ademas que no puedo poner el nombre que yo quiero
ni guardarlo donde yo le diga.

Si es posible, me gustaria que me indicarais como podria hacer para, en
la 'hoja1' copiar solo un rango de celdas con sus formatos y demas.

Un saludo y de nuevo muchas gracias por leer todo este rollo.
Respuesta Responder a este mensaje
#2 Altex
19/04/2007 - 21:55 | Informe spam
Ante todo gracias por contestar.

Yo sigo buscando soluciones y creo que he encontrado una que se aproxima
bastante a lo que quiero. El codigo es el siguiente:

Sub Guardar_2()
Application.ScreenUpdating = False
Dim Hoja As Worksheet, Estas_hojas
Estas_hojas = Array("Hoja1", "Hoja2")
For Each Hoja In Worksheets(Estas_hojas)
Hoja.Unprotect ""
Next
Worksheets(Estas_hojas).Copy
For Each Hoja In Worksheets
Hoja.UsedRange.Value = Hoja.UsedRange.Value
Next
For Each Hoja In ThisWorkbook.Worksheets(Estas_hojas)
Hoja.Protect ""
Next
Guardalo:
If Not Application.Dialogs(xlDialogSaveAs).Show Then GoTo Guardalo
ActiveWorkbook.Close
ThisWorkbook.Worksheets("Hoja1").Activate
End Sub


Este macro me copia las dos hojas a un libro nuevo con los valores de las
celdas nada mas y me abre el cuadro de dialogo 'Guardar como...', le
pongo el nombre del archivo y lo guardo en la ubicacion que yo quiero

Bien, que "fallos" le veo a este codigo, necesito que el nombre del libro
nuevo lo coga de dos 'celdas' que estan en la 'Hoja1'.
Si una vez que ejecuto el macro y me sale el 'cuadro de dialogo' de
'guardar como...' le quiero dar a 'Cancelar' no me deja, tengo que
guardar el libro para que desaparezca. Como podria evitar eso?
Ya complicando un poco mas el tema en la 'Hoja2' tengo unas filas con
datos y otras no, querria que solo me copiase al nuevo libro las filas
que si tienen datos en un rango determinado.
En el libro original lo uso para crear el fax con el presupuesto que
luego envio al cliente y lo tengo solucionado asi:

Sub ImprimirDatos()
Dim Celda As Range

Application.ScreenUpdating = False
Sheets("Hoja2").Select
With Hoja2
.Unprotect
For Each Celda In .Range("N37:N60")
Celda.EntireRow.Hidden = (Celda = 0 Or Celda = "")
Next
.Parent.PrintPreview
Range("N37:N60").EntireRow.Hidden = False
.Protect
End With
End Sub

Me oculta las filas que no contienen datos en el rango indicado y luego
me lanza una 'Vista previa del documento' para ver que todo esta
correcto.

Como podria incluir este codigo en el inicial?
De la 'Hoja1' seria posible copiar al libro nuevo solo un rango de
celdas?


Un saludo y muchas gracias por todo.


wrote in
news::

Primer que nada y como cualquier problema en la vida, hay que
dividirlo en problemas mas pequeños y luego a eso "problemitas"
buscarles solucion.

Ahora, bien tu problema no es tan grave y se podrian hacer varias
cosas. Se puede tomar cualquier parte del libro pegarlo en otro libro
y salvarlo donde usted lo desee. Para seleccionar la ubicación se
podría invocar el cuadro de diálogo de "Guardar como" para que usted
decida en ese mismo momento donde guardarlo. Ademas tambien se puede
copiar cualquier hoja a un libro nuevo, quitarle las referencias y
luego salvarlo donde sea requerido utilizando "Guardar como". Como
todo es posible no se cual solución le quede mas cómoda, si a mi me
pregunta prefiero copiar las hojas enteras y luego salvar el libro.

Si gusta indiqueme su eleccion y vamos creando el código.

Marco Barboza - San Jose, Costa Rica

On Apr 19, 11:53 am, Altex wrote:
Hola a todos, primero de todo queria agradecerles el que al menos
hayan accedido a leer mi "pequeño" problema.

En el tema de Excel soy autodidacta, supongo que como casi todos, asi
que llevo ya unos dias intentando buscar por internet y en estos
foros una solucion a mi problema. He encontrado algunos ejemplos que
he intentado adaptar a mis necesidades, pero no lo consigo.

Les cuento mi escenario:

Tengo un libro de excel mediante el que calculo el precio de un
producto, el precio de ese producto final viene dado por la
composicion de varios articulos que tienen un precio que se coge de
otras hojas en otros libros. En este libro tambien tengo otras hojas
que me sirven para sacar un resumen de la composicion de ese producto
que uso para enviar por fax.

La cuestion que llevo intentando resolver varios dias es que me
gustaria poder guardar mediante una macro esas dos hojas 'hoja1' y
'hoja2', que en principio estan protegidas, en otro libro, respetando
el formato y los valores pero sin que se guarden los vinculos con
otras hojas. Ese 'nuevo libro' deberia de tener un nombre que viniese
dado por dos datos que cogeria de dos celdas dentro de la 'hoja1' y
que ese pudiese guardarlo donde yo quisiera, algo asi como la opcion
'Guardar como...'

He probado varios codigos que he encontrado por internet, al final
llego a un camino sin salida y siempre termino bloqueado, asi que os
pido vuestra ayuda para ver si podeis orientarme un poco como lo
podria hacer.

Sub Guardar()
Sheets("Hoja2").Unprotect
Sheets("Hoja1").Unprotect
Sheets(Array("Hoja1", "Hoja2")).Select
Sheets("Hoja2").Activate
Sheets(Array("Hoja1", "Hoja2")).Copy
Sheets(Array("Hoja1", "Hoja2")).Select
Sheets("Hoja1").Activate
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:
=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=Environ("USERPROFILE") &
"\Escritorio\Mi libro.xls"
End Sub

Con este codigo consigo que me copie las dos hojas en otro libro y
que me lo guarde en el escritorio con un nombre predefinido, pero no
se si esta sera la mejor manera, ademas que no puedo poner el nombre
que yo quiero ni guardarlo donde yo le diga.

Si es posible, me gustaria que me indicarais como podria hacer para,
en la 'hoja1' copiar solo un rango de celdas con sus formatos y
demas.

Un saludo y de nuevo muchas gracias por leer todo este rollo.





Respuesta Responder a este mensaje
#3 Altex
21/04/2007 - 11:13 | Informe spam
Nadie puede echarme una mano?

Estoy atascado y no encuentro la manera de resolver mi problema
Respuesta Responder a este mensaje
#4 Tux
21/04/2007 - 20:11 | Informe spam
Altex escribió:
Nadie puede echarme una mano?

Estoy atascado y no encuentro la manera de resolver mi problema



Hola Altex :)

Arreglando un poco el codigo propuesto, prueba algo asi:


'--
Sub Guardar_2()

Application.ScreenUpdating = False

Dim Hoja As Worksheet
Dim Estas_hojas As Variant
Dim x As Variant
Dim z As Variant
Dim mycelda As String
Dim ruta

ruta = "C:\"
mycelda = Sheets("hoja1").Range("k5")

x = "hoja2"

z = "hoja_1"

Sheets("hoja1").Range("A1:C17").Copy
Sheets.Add.Paste
ActiveSheet.Name = z

Application.CutCopyMode = False

Estas_hojas = Array(x, z)
For Each Hoja In Worksheets(Estas_hojas)
Hoja.Unprotect ""
Next
Worksheets(Estas_hojas).Copy
For Each Hoja In Worksheets
Hoja.UsedRange.Value = Hoja.UsedRange.Value
Next
For Each Hoja In ThisWorkbook.Worksheets(Estas_hojas)
Hoja.Protect ""
Next

ActiveWorkbook.SaveAs Filename:=ruta & mycelda

ActiveWindow.Close

Windows("compararlibros.xls").Activate

Application.DisplayAlerts = False
Sheets(z).Delete
Application.DisplayAlerts = True

End Sub

'--

Luego para incluir Imprimir datos en Sub Guardar_2, añade al final esta
linea de codigo:

'
Call ImprimirDatos

'--

Prueba y nos comentas ok? :-)

Saludos
Monica


Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

Now We are free [Enya]

www.fermu.com



Anotacion: Si por los foros veis Spam masivo sobre temas que nada tienen
que ver con el foro en cuestion,
Deciros que es un << Troll/s >> que unas veces usurpan el nombre e
identidad de gente profesional en la materia,
y otras veces usurpan el nombre e identidad de aquel o aquellos que
contestan a su Spam, su verdadero nombre es:

Pablito "Alias el Cuervo" y Compañia [payasos de circo ]

Lo mejor que podeis hacer, es o bien ignorarlos como si no existieran o
hacer seguimiento de las NEws de microsoft,

a traves de por ejemplo entre otros:

Outloock Express o Mesnews [con opcion a suprimirlos ]

Y Si utilizais el Thunderbird podeis utilizardo como Separador de hilos
y queda muy mono :-))))
Respuesta Responder a este mensaje
#5 Tux
21/04/2007 - 20:24 | Informe spam
Altex escribió:
Nadie puede echarme una mano?

Estoy atascado y no encuentro la manera de resolver mi problema



Y si quieres tambien coger la ruta de una celda solo retoca estas lineas:

'

Dim ruta As String


ruta = Sheets("hoja1").Range("k5")
'-

Donde la celda K5 de la hoja 1 la ruta tiene que terminar con barra
invertida [\]

ejemplo:

C:\documents and settings\Usuario\Escritorio\MiCarpeta\

Saludos
Monica



Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

Now We are free [Enya]

www.fermu.com



Anotacion: Si por los foros veis Spam masivo sobre temas que nada tienen
que ver con el foro en cuestion,
Deciros que es un << Troll/s >> que unas veces usurpan el nombre e
identidad de gente profesional en la materia,
y otras veces usurpan el nombre e identidad de aquel o aquellos que
contestan a su Spam, su verdadero nombre es:

Pablito "Alias el Cuervo" y Compañia [payasos de circo ]

Lo mejor que podeis hacer, es o bien ignorarlos como si no existieran o
hacer seguimiento de las NEws de microsoft,

a traves de por ejemplo entre otros:

Outloock Express o Mesnews [con opcion a suprimirlos ]

Y Si utilizais el Thunderbird podeis utilizardo como Separador de hilos
y queda muy mono :-))))
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida